Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。
如何更改 ItemsControl 中项目的 Canvas.left?
我想在画布上包裹一些矩形。矩形的详细信息在我的视图模型的列表中。我成功绘制了矩形,但未能使它们可移动。在我的事件处理程序 Canvas.GetLe...
我正在为我的应用程序(WPF dotnet-core 8.0)开发一个应用程序更新程序功能,它目前运行良好,下面是工作流程,我不确定它是否是一个好的流程: 当前 GUI 上的一个新按钮,当
我有滚动查看器、数据网格、组合框等控件。我可以用手指、鼠标滚轮滚动,但不能用附带的笔滚动。是否有任何行为或属性可以启用此功能
即使启用,Visual Studio WPF xaml 设计器也不会显示
所以我尝试在Visual Studio中加载XAML设计器,但它不会显示,只显示源代码编辑器 我使用 XAML WPF 设计器做出很多决定,因为我不属于一个团队并且这样做
使用 BindingExpression 中的数据进行 WPF 测试验证规则
我有以下问题,我想测试WPF中的ValidationRule是否按预期工作。 我的 ValidationRule 使用 BindingExpression 中定义的 DataItem 中的一些数据。 这不是问题...
RotateTransform 和三角公式不一致,画布中的对象未对齐
我找不到任何智能方法来获取在画布上应用了变换的对象的绝对位置,我决定使用一个点并对其应用与...
我无法让 WPF 中的双向绑定正常工作。 我得到的是一个名为 UserCache 的类,它有一个名为“Current”的属性。此类的对象被放置在外观类中,...
我想创建一个模式弹出窗口。到目前为止,我已经制作了一个在需要时创建的窗口。但我认为这不是正确的做法。问题是,每次我打电话,它都会打开大约20...
我有一个自定义控件,我们称之为uc_mycontrol,在这个控件内,我有一个按钮,我们将其命名为btn_demo。 所以在我的 mainwindow.xaml 中,我有一个 uc_mycontrol 的实例。 我想使用
我的要求是将自定义用户控件显示为弹出窗口。我正在尝试使用此方法在 Silverlight/MVVM 中实现此功能。但我无法找到一种方法可以将一些参数传递给我的 p...
我想在我的应用程序中拥有多个资源字典并访问特定资源字典中定义的资源。这可能吗?根据我读到的内容,正在寻找
在 HeaderedItemControl 中,我有一个标题网格: 在 HeaderedItemControl 中,我有一个标题网格: <Grid Margin="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="25" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100"/> <ColumnDefinition Width="*" /> <ColumnDefinition Width="75"/> <ColumnDefinition Width="75"/> <ColumnDefinition Width="18" /> <Grid.ColumnDefinitions> 它显示正确,并且当窗口宽度更改时,一个 * 列标题会按预期增长。 项目模板定义了相同的网格。在项目模板中,* 列(第 5 列)内有一个包含 2 列的网格: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="auto" /> </Grid.ColumnDefinitions> 第 1 列在适当的情况下显示一个图标,如果记录不需要该图标并且似乎表现正常,则第 1 列会折叠。 第 0 列(* 列)包含一个带有内容 TextBlock、TextWrapping="NoWrap" 和 TextTrimming="WordEllipsis" 的标签。 如果标签中的文本很短,则所有内容都会正确显示:文本在第 0 列中左对齐,图标在整个网格列中右对齐。 如果文本的长度大于列的宽度,则该列会稍微增长,从而稍微推动其余的列。文本被适当地截断,并添加了省略号,但它侵占了下一栏的一些空间。 Maye 价值 20 像素。 无论文字多长,推送的量都是一样的。我可以阻止这种情况发生,同时保持该列在更宽的屏幕上灵活增长吗?我尝试了各种配置,甚至使用没有网格和图标的单个标签,但仍然存在这个问题。 HeaderedItemsControl XAML: <HeaderedItemsControl x:Name="ItemsHIC" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" AlternationCount="2" BorderBrush="{StaticResource brush_Logo}" Margin="0,1,0,0" IemsSource="{Binding Path=MyItemView}"> <HeaderedItemsControl.Template> <ControlTemplate TargetType="{x:Type HeaderedItemsControl}"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <ContentPresenter Grid.Row="0" ContentSource="Header" /> <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Hidden"> <ItemsPresenter /> </ScrollViewer> </Grid> </ControlTemplate> </HeaderedItemsControl.Template> <HeaderedItemsControl.Header> <Grid Margin="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="25" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100"/> <ColumnDefinition Width="*" /> <ColumnDefinition Width="75"/> <ColumnDefinition Width="75"/> <ColumnDefinition Width="18" /> <!-- Accomodates the scroll bar in the items grid. --> </Grid.ColumnDefinitions> <Border Grid.Column="0" Background="{StaticResource brush_Logo}" Margin="1,0,0,0"> <Image Source="..\Resources\SomeImage.png" Width="20" Height="20" SnapsToDevicePixels="True" /> </Border> <Label Grid.Column="1" Background="{StaticResource brush_Logo}" Foreground="White" Margin="1,0,0,0" Padding="0" Height="24" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Column 1" /> <Label Grid.Column="2" Background="{StaticResource brush_Logo}" Foreground="White" Margin="1,0,0,0" Padding="0" Height="24" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Column 2" /> <Label Grid.Column="3" Background="{StaticResource brush_Logo}" Foreground="White" Margin="1,0,0,0" Padding="0" Height="24" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Column 3" /> <Label Grid.Column="4" Background="{StaticResource brush_Logo}" Foreground="White" Margin="1,0,0,0" Padding="0" Height="24" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Column 4" /> <Label Grid.Column="5" Background="{StaticResource brush_Logo}" Foreground="White" Margin="1,0,0,0" Padding="0" Height="24" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Column 5" /> <Label Grid.Column="6" Background="{StaticResource brush_Logo}" Foreground="White" Margin="1,0,0,0" Padding="0" Height="24" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Column 6" /> <Label Grid.Column="7" Background="{StaticResource brush_Logo}" Foreground="White" Margin="1,0,0,0" Padding="0" Height="24" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Column 7" /> <Rectangle Grid.Column="8" Fill="{StaticResource brush_Logo}" Margin="1,0,0,0" /> <!-- Fills header line with color to match, over scroll bar. --> </Grid> </HeaderedItemsControl.Header> <HeaderedItemsControl.ItemTemplate> <DataTemplate> <Grid x:Name="ItemsGrid" Margin="0,1,0,0" MaxWidth="{Binding ActualWidth, ElementName=ItemsHIC}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="25" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="75" /> <ColumnDefinition Width="75" /> </Grid.ColumnDefinitions> <!-- Column 0 Record Type Icon --> <Image Grid.Column="0" Source="/Resources/TypeIcon.png" Width="20" Height="20" SnapsToDevicePixels="True" /> <!-- Column 1 --> <Label Grid.Column="1" BorderThickness="1,0,0,0" Padding="5,0,5,0" BorderBrush="White" Background="Transparent" Height="24" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" Content="{Binding Column1Data}" /> <!-- Column 2 --> <Label Grid.Column="2" BorderThickness="1,0,0,0" Padding="5,0,5,0" BorderBrush="White" Background="Transparent" Height="24" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="{Binding Column2Data}" /> <!-- Column 3 --> <Label Grid.Column="3" BorderThickness="1,0,0,0" Padding="5,0,5,0" BorderBrush="White" Background="Transparent" Height="24" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="{Binding Column3Data}" /> <!-- Column 4 --> <Label Grid.Column="4" BorderThickness="1,0,0,0" Padding="5,0,5,0" BorderBrush="White" Background="Transparent" Height="24" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" Content="{Binding Column4Data}" /> <!-- Column 5 with Optional Icon --> <Border Grid.Column="5" BorderThickness="1,0,1,0" BorderBrush="White"> <!-- Border makes the background consistent across inner grid. --> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Label Grid.Column="0" Padding="5,0,5,0" Background="Transparent" MinHeight="24" VerticalContentAlignment="Center" ClipToBounds="True"> <TextBlock Text="{Binding PotentiallyLongString}" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis"> <TextBlock.ToolTip> <!-- Tooltip is only enabled if the string is trimmed. --> <ToolTip Visibility="{Binding RelativeSource={RelativeSource Self}, Path=PlacementTarget, Converter={StaticResource trimmedVisibilityConverter}}"> <ToolTip.Content> <TextBlock Text="{Binding PotentiallyLongString, Mode=TwoWay}" TextWrapping="Wrap" MaxWidth="250"/> </ToolTip.Content> </ToolTip> </TextBlock.ToolTip> </TextBlock> </Label> <Image Grid.Column="1" Source="/Resources/Info.Normal.png" SnapsToDevicePixels="True" Width="16" Height="16" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,2,0" Visibility="{Binding Path=HasNote, Converter={StaticResource BoolVisibilityCollapse}}"> <Image.ToolTip> <ToolTip MaxWidth="200"> <TextBlock Text="{Binding Path=ItemNote}" TextWrapping="Wrap" /> </ToolTip> </Image.ToolTip> </Image> </Grid> </Border> <!-- Column 6 --> <Label Grid.Column="6" BorderThickness="0,0,1,0" Padding="5,0,5,0" BorderBrush="White" Background="Transparent" MinHeight="24" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" Content="{Binding Column6Data}"/> <!-- Column 7 Management Options --> <Border Grid.Column="7" BorderThickness="0,0,1,0" BorderBrush="White"> <StackPanel Orientation="Horizontal"> <Button Style="{StaticResource EditButton}" ToolTip="Edit Item" Background="Transparent" HorizontalAlignment="Center" VerticalAlignment="Center" Command="{Binding DataContext.EditCommand, ElementName=ItemsHIC}" CommandParameter="{Binding}"/> <Button Style="{StaticResource DeleteButton}" ToolTip="Delete Item" Background="Transparent" HorizontalAlignment="Center" VerticalAlignment="Center" Command="{Binding DataContext.DeleteCommand, ElementName=ItemsHIC}" CommandParameter="{Binding}"/> </StackPanel> </Border> </Grid> <DataTemplate.Triggers> <Trigger Property="ItemsControl.AlternationIndex" Value="0"> <Setter Property="Background" Value="WhiteSmoke" TargetName="ItemsGrid" /> </Trigger> <Trigger Property="ItemsControl.AlternationIndex" Value="1"> <Setter Property="Background" Value="{StaticResource brush_LogoLight}" TargetName="ItemsGrid" /> </Trigger> </DataTemplate.Triggers> </DataTemplate> </HeaderedItemsControl.ItemTemplate> </HeaderedItemsControl> 您的问题来自于您在 ItemsTemplate 和 Header 中没有使用相同的 ColumnDefnitions。 ItemTemplate 中的 ColumnDefnitions 缺少最后一个定义,即 18(如标题网格中的那样)。添加 <ColumnDefinition Width="18" /> 并且不放置任何该列应该可以解决您的问题。
使用 File.WriteAllText 和 File.ReadAllText 后 WPF 应用程序崩溃
我创建了一个WPF应用程序。该应用程序的一个实例始终在后台运行(没有 UI),它充当一项服务来检测来自 API 的新消息。当它检测到新消息时,它会...
我有一个我使用的自定义窗口设计。它具有圆角,当我将其他控件添加到窗口中时可能会导致问题。 窗口样式定义: <p>我有一个我使用的自定义窗口设计。它具有圆角,当我将其他控件添加到窗口中时可能会导致问题。</p> <p>窗口样式定义:</p> <pre><code><Style x:Key="Authentication_Window" TargetType="{x:Type Window}"> <Setter Property="AllowsTransparency" Value="True" /> <Setter Property="Background" Value="Transparent" /> <Setter Property="BorderBrush" Value="{DynamicResource AppPrimaryBrush}" /> <Setter Property="BorderThickness" Value="0" /> <Setter Property="Focusable" Value="False" /> <Setter Property="ResizeMode" Value="NoResize" /> <Setter Property="ShowInTaskbar" Value="False" /> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="Topmost" Value="True" /> <Setter Property="WindowState" Value="Normal" /> <Setter Property="WindowStyle" Value="None" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Window}"> <Grid> <Border Background="White" BorderBrush="Transparent" BorderThickness="3" CornerRadius="8"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" CornerRadius="8" Style="{DynamicResource ShadowedBorder_Base}" /> </Border> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </code></pre> <p>我遇到的问题是我创建了自定义页眉/页脚控件(继承自 ContentControl),我想将其添加到此窗口。这些控件也用于其他窗口(没有圆角或具有不同的 CornerRadius)。</p> <p>我的问题是,有没有办法让页眉/页脚控件根据其所在的窗口自动计算出角点需要的半径? (对于 HeaderControl,我只想更改顶角,对于 FooterControl,我只想更改底角)</p> <p>TIA。</p> </question> <answer tick="false" vote="0"> <p>我认为转换器是一种合理的方法,您可以将其自身传递到转换器中,检查其 <pre><code>HeaderControl</code></pre> 或 <pre><code>FooterControl</code></pre> 是否返回 <pre><code>Thickness</code></pre> 以及适当的值,这些值将成为边距。</p> <p>在下面的示例中,我使用 <pre><code>VisualTreeHelper.GetParent()</code></pre> 来查找控件父级,但是如果您将控件嵌套在其他控件中,则这会失败,因此您需要到达正确的级别以查找其是否为页眉/页脚,也许可以通过传递正确的控制。</p> <p>还根据此:<a href="https://stackoverflow.com/questions/5454726/can-a-wpf-converter-access-the-control-to-which-it-is-bound">WPF转换器可以访问它所绑定的控件吗?</a>如果你想传递自身,则需要使用<pre><code>IMultiValueConverter</code></pre>并在XMAL中使用<pre><code><MultiBinding></code></pre>。</p> <p><em>注意:我很快写了这篇文章,只是为了看看我可以进入转换器,因此所有错误处理等都被省略了。</em></p> <pre><code>public class ControlTypeToMarginConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { DependencyObject parentObject = VisualTreeHelper.GetParent((FrameworkElement)values[0]); if (parentObject != null) { if (parentObject is HeaderControl) { return new Thickness(5, 5, 0, 0); } } return null; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { return null; } } </code></pre> </answer> </body></html>
(WPF C#程序) 我想将 File.zip 解压缩到某个目录,然后删除 File.zip,需要在删除之前检查是否已完成(假设解压缩有效但速度很慢)。 喜欢它,当我将一些文件复制到...
Mouse.OverrideCursor 和 Mouse.SetCursor 有什么区别
从阅读文档来看,除了 Mouse.SetCursor 返回一个 bool 之外,Mouse.OverrideCursor 和 Mouse.SetCursor 之间似乎没有任何区别。这真的是唯一的区别吗...
我正在使用 Caliburn Micro MVVM,直到重新启动 Visual Studio 后才出现此问题。我在 App.xaml 中收到此警告: 这是文件: 我正在使用 Caliburn Micro MVVM,直到重新启动 Visual Studio 后才出现此问题。我在 App.xaml: 中收到此警告 这是文件: <Application x:Class="Files.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:Files"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary> <local:Bootstrapper x:Key="Bootstrapper"/> </ResourceDictionary> <ResourceDictionary Source="/Themes/SideMenu.xaml"/> <ResourceDictionary Source="/Themes/DirectoryBar.xaml"/> <ResourceDictionary Source="/Themes/SearchBar.xaml"/> <ResourceDictionary Source="/Themes/Scrollbar.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application> 我不记得发生此错误时进行过任何更改。我还在错误列表中收到以下错误: 以下内容在Bootstrapper.cs: using Caliburn.Micro; using Files.ViewModels; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace Files { public class Bootstrapper : BootstrapperBase { public Bootstrapper() { Initialize(); } protected override void OnStartup(object sender, StartupEventArgs e) { DisplayRootViewForAsync<ShellViewModel>(); } } } 我不确定这个问题的根源是什么。 编辑: 这是App.xaml.cs: using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows; namespace Files { /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { } } 我找到了解决您遇到的问题的可能方法。已经有一段时间了,但我希望它对其他人有用:将 Bootstrapper.cs 和 App.xaml(带有附加的 App.xaml.cs)文件放在项目中而不是放在项目内的任何文件夹中就足够了。
WPF,列表视图。 RenderTargetBitmap - 如何渲染整个ListView,不限于屏幕
我有ListView,它显示一些图片。并非所有图片都在屏幕上(在窗口中)可见。我想做一些类似“联系表”的东西——所有图片。 我从 ListView 中得到了 ScrollViewer,...