wpf 相关问题

Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。

如何在 WPF 中轻松创建具有自定义名称的新事件处理程序?

我一直想知道在 XAML 中为元素创建新事件处理程序的快捷方式或其他方式是什么,当我输入 Click="" VS 向我显示一个使用通用创建新事件处理程序的选项...

回答 1 投票 0

顺序加载窗口

我尝试按顺序加载两个窗口,但第一个无法正确加载。可能是什么原因?我是否用第二个窗口数据阻塞了一些 UI 渲染线程? 私人无效loadFormWithLoadingS...

回答 1 投票 0

尽管 IsEnabled 设置为 true,DataGrid 中的按钮仍被禁用

目标是将启用的按钮插入到 DataGrid 的列中。 在以下 XAML 代码片段中,将 Button 插入到 DataGrid 中,并将 IsEnabled 属性设置为 true。 目标是将启用的 Button 插入到 DataGrid 的列中。 在以下 XAML 代码片段中,将 Button 插入到 DataGrid 中,并将 IsEnabled 属性设置为 true。 <DataGrid Name="DgData" HorizontalAlignment="Left" Height="306" Margin="10,119,0,0" VerticalAlignment="Top" Width="637" Background="White"> <DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Setter Property="IsEnabled" Value="{Binding RelativeSource={RelativeSource Self},Path=IsNewItem,Mode=OneWay}" /> </Style> </DataGrid.RowStyle> <DataGrid.Columns> <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Id" IsReadOnly="True" Visibility="Hidden"/> <DataGridTextColumn Header="Date" Binding="{Binding Date}" IsReadOnly="True" Width="100" CanUserResize="False"/> <DataGridTextColumn Header="Domain name" Binding="{Binding DomainName}" IsReadOnly="True" Width="105" CanUserResize="False"/> <DataGridTextColumn Header="Type" Binding="{Binding Relevance}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Category" Binding="{Binding DomainName}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Description" Binding="{Binding Content}" IsReadOnly="True" Width="200" CanUserResize="False"/> <DataGridTemplateColumn MinWidth="100" Header="Note" CanUserSort="True" CanUserResize="False"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Name="BtnShowNotes" IsEnabled="True" Click="BtnShowNotes_OnClick">Show</Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> 但是,执行应用程序时,该按钮被禁用。 是什么导致了这个问题? 您的 RowStyle 将整行的 IsEnabled 属性设置为 false。删除此一项,Button 应启用: <DataGrid Name="DgData" HorizontalAlignment="Left" Height="306" Margin="10,119,0,0" VerticalAlignment="Top" Width="637" Background="White"> <DataGrid.Columns> <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Id" IsReadOnly="True" Visibility="Hidden"/> <DataGridTextColumn Header="Datum" Binding="{Binding Date}" IsReadOnly="True" Width="100" CanUserResize="False"/> <DataGridTextColumn Header="Doménové jméno" Binding="{Binding DomainName}" IsReadOnly="True" Width="105" CanUserResize="False"/> <DataGridTextColumn Header="Druh" Binding="{Binding Relevance}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Kategorie" Binding="{Binding DomainName}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Popis" Binding="{Binding Content}" IsReadOnly="True" Width="200" CanUserResize="False"/> <DataGridTemplateColumn MinWidth="100" Header="Poznámky" CanUserSort="True" CanUserResize="False"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Name="BtnShowNotes" IsEnabled="True" Click="BtnShowNotes_OnClick">Zobrazit</Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid>

回答 1 投票 0

Windows 屏幕键盘无法在平板电脑上自动打开

我正在开发一个类似信息亭的应用程序,在这种模式下我已经用我的应用程序替换了默认的Windows explorer.exe shell。 在这种模式下,我应用此模式的平板电脑不会...

回答 1 投票 0

在 C# WPF MVVM 中保持 TreeView ViewModel 和模型同步的策略

我尝试在拖放操作期间使 TreeView 与我的数据层保持同步。 问题 TreeView 中的拖放操作应该作用于 ItemViewModel 还是应该发送到...

回答 2 投票 0

在 C# WPF MVVM 中保持 ViewModel 和持久性同步的策略

我尝试在拖放操作期间使 TreeView 与我的数据层保持同步。 问题 TreeView 中的拖放操作应该作用于 ItemViewModel 还是应该发送到...

回答 2 投票 0

WPF 应用程序资源定位器无法定位文件

我对 .NET C# WPF 应用程序制作非常陌生,我遇到过这个名为 MaterialDesignInXaml 的包来风格化我的应用程序,但我无法让它工作。当我包含某个 do...

回答 1 投票 0

将 Collection 类型的 AttachedProperty 绑定到 TemplatedParent

我想创建一个附加属性来保存 MenuItem 对象的集合。这些将在我的 GroupBox 自定义 ControlTemplate 中使用。在该 ControlTemplate 中,我想使用我的自定义

回答 1 投票 0

WPF:ItemsPanelTemplate 显示每个项目具有固定高度比例的元素

我想将 ItemsControl 与 ItemsSource 一起使用。我的问题是如何确保项目在显示时保持其高度比。这些项目可以有不同的尺寸,每次我调整尺寸

回答 1 投票 0

关闭 RecognizesAccessKey 的 WPF DataGrid

我有一个非常基本的 WPF 应用程序,并附有 MS SQL 服务器作为数据源。我的数据网格声明如下: 我有一个非常基本的 WPF 应用程序,并附有 MS SQL 服务器作为数据源。我的数据网格声明如下: <DataGrid HorizontalAlignment="Left" Margin="10,88,0,0" VerticalAlignment="Top" Height="456" Width="1018" ItemsSource="{Binding}" /> 当我运行应用程序时,我看到数据从数据库加载到网格中,但列标题看起来很奇怪。每个最初包含下划线的标题都删除了该下划线:some_title 变为 sometitle。 我发现这是因为下划线被识别为控制符号,将下一个符号变成助记符。 如何禁用此行为? 我发现如果你将单下划线加倍,即 some__title 而不是 some_title,则可以绕过此行为。但由于我的数据源是外部数据库,我无法影响它。或者也许用转换器? 我认为最好的方法是将属性RecognizesAccessKey转为false,但不幸的是它无法访问。 我是 WPF 新手,感谢您的帮助! 附注她是史努比的照片(如果有帮助的话) 编辑:我的目标框架是.net 4.5 尽管这是一个老问题,但我找到了解决方案。它可能对某人有帮助。 <DataGrid HorizontalAlignment="Left" Margin="10,88,0,0" VerticalAlignment="Top" Height="456" Width="1018" ItemsSource="{Binding}" > <DataGrid.ColumnHeaderStyle> <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="DataGridColumnHeader"> <Border> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="False" /> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </DataGrid.ColumnHeaderStyle> </DataGrid> 我能想到的最佳解决方案是拦截 DataGrid 事件 AutoGeneratingColumn 并将所有下划线替换为两个下划线,如下所示: private void DataGrid_AutoGeneratingColumn_1(object sender, DataGridAutoGeneratingColumnEventArgs e) { string header = e.Column.Header.ToString(); // Replace all underscores with two underscores, to prevent AccessKey handling e.Column.Header = header.Replace("_", "__"); } 根据我的理解,(遗憾的是)不可能在不重新定义整个控制模板的情况下覆盖底层 RecognizesAccessKey 的 ContentPresenter 的值。 请参阅 msdn 论坛上的此主题:如何在标签上设置 RecognizesAccessKey 而不影响其他参数?. 您可以使用自定义列,当您使用自定义列时,您可以根据需要定义列标题。 要添加到已接受的答案中,如果您想保留数据网格的原始样式,请按如下所示操作,并将 ContentPresenter 的 RecognizeAccessKey 更改为 False。 <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type DataGridColumnHeader}"> <Grid> <Themes:DataGridHeaderBorder BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" IsClickable="{TemplateBinding CanUserSort}" IsPressed="{TemplateBinding IsPressed}" IsHovered="{TemplateBinding IsMouseOver}" Padding="{TemplateBinding Padding}" SortDirection="{TemplateBinding SortDirection}" SeparatorBrush="{TemplateBinding SeparatorBrush}" SeparatorVisibility="{TemplateBinding SeparatorVisibility}"> <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="False" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> </Themes:DataGridHeaderBorder> <Thumb x:Name="PART_LeftHeaderGripper" HorizontalAlignment="Left"> <Thumb.Style> <Style TargetType="{x:Type Thumb}"> <Setter Property="Width" Value="8"/> <Setter Property="Background" Value="Transparent"/> <Setter Property="Cursor" Value="SizeWE"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Thumb}"> <Border Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"/> </ControlTemplate> </Setter.Value> </Setter> </Style> </Thumb.Style> </Thumb> <Thumb x:Name="PART_RightHeaderGripper" HorizontalAlignment="Right"> <Thumb.Style> <Style TargetType="{x:Type Thumb}"> <Setter Property="Width" Value="8"/> <Setter Property="Background" Value="Transparent"/> <Setter Property="Cursor" Value="SizeWE"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Thumb}"> <Border Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"/> </ControlTemplate> </Setter.Value> </Setter> </Style> </Thumb.Style> </Thumb> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> 通过 XAML,您可以更改 DataGridColumnHeader 行为以禁用将“_”解释为特殊字符(以便保留它): <DataGrid.Resources> <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate > <TextBlock Text="{Binding}" /> </DataTemplate> </Setter.Value> </Setter> </Style> </DataGrid.Resources>

回答 5 投票 0

WPF - 在 XAML 中动画网格长度

我只是想知道是否可以使用纯 XAML 对网格的高度进行动画处理?我看了这个教程: http://windowsclient.net/learn/video.aspx?v=70654 但似乎有一个...

回答 3 投票 0

WPF - 根据 IsEnabled 属性更改按钮背景的样式

我为我的按钮做了这个样式,它加载得很好 但我现在尝试根据 IsEnabled 属性设置不同的背景,但这似乎不起作用 我为我的按钮制作了这种样式,并且加载得很好 但我现在尝试根据 IsEnabled 属性设置不同的背景,但这似乎不起作用 <SolidColorBrush x:Key="Color" Color="#FFADD2CC"/> <SolidColorBrush x:Key="Color_Disabled" Color="#FF8D9B98"/> <Style x:Key="ButtonStyle" TargetType="Button"> <Setter Property="Height" Value="32"/> <Setter Property="Padding" Value="8,4,8,4"/> <Setter Property="VerticalAlignment" Value="Center"/> <Setter Property="FontWeight" Value="Bold"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Border Background="{TemplateBinding Background}"> <Grid> <Rectangle x:Name="BackgroundRect" Fill="{StaticResource Color}" RadiusX="2" RadiusY="2"/> <ContentPresenter Margin="{TemplateBinding Padding}" HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid> </Border> <ControlTemplate.Triggers> <!-- DataTrigger to change the background color based on IsEnabled property --> <DataTrigger Binding="{Binding IsEnabled, RelativeSource={RelativeSource TemplatedParent}}" Value="True"> <Setter TargetName="BackgroundRect" Property="Fill" Value="{StaticResource Color}"/> </DataTrigger> <DataTrigger Binding="{Binding IsEnabled, RelativeSource={RelativeSource TemplatedParent}}" Value="False"> <Setter TargetName="BackgroundRect" Property="Fill" Value="{StaticResource Color_Disabled}"/> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> 我在我的主模板中使用它,就像这样 <Button Grid.Column="1" Content="Button Text" ToolTip="Some tooltip" Click="OnClick" Style="{StaticResource ButtonStyle}" Margin="0,0,4,0" IsEnabled="false"/> 我希望按钮根据 IsEnabled 值具有不同的颜色 感谢您的帮助 您只需要在 Trigger 属性上设置一个普通的 IsEnabled 即可设置按钮的 Background。 ControlTemplate 中的 Grid 和 Rectangle 是多余的。 <SolidColorBrush x:Key="BackgroundEnabled" Color="#FFADD2CC"/> <SolidColorBrush x:Key="BackgroundDisabled" Color="#FF8D9B98"/> <Style x:Key="ButtonStyle" TargetType="Button"> ... <Setter Property="Background" Value="{StaticResource BackgroundEnabled}"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Border Background="{TemplateBinding Background}"> <ContentPresenter Margin="{TemplateBinding Padding}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Background" Value="{StaticResource BackgroundDisabled}"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>

回答 1 投票 0

获取当前ComboBox值

目标是获取以编程方式填充的 ComboBox 的当前值。 在以下 C# 代码片段中,ComboBox 的 ItemsSource 填充有从外部获取的数据

回答 1 投票 0

WPF TextBox 通过鼠标单击选择内容

对于WPF TextBox,我需要在鼠标单击它的情况下选择它的所有内容(在“现实生活”中,它将在触摸板显示器上触摸)。 为了进行测试,我创建了简单的项目并检查解决方案...

回答 1 投票 0

启用/禁用 wpf 应用程序中所有控件的工具提示

我正在编写一个WPF应用程序,它有很多不同的控件,每个控件都有自己的工具提示。尽管工具提示很有用,但其中一些很长并且很碍事。 我想成为有能力的...

回答 4 投票 0

如何让DataGrid列背景透明?

我希望在 WPF 应用程序中的 DataGrid 中有一个具有透明背景的列。标题和单元格本身需要透明,但其中的内容不透明,这将是......

回答 1 投票 0

WPF 和 VB.Net 倒计时器 - 未调用 Tick 事件

我想在按下按钮时使用倒计时器来更新 wpf 形式的文本块。 目前看来我的 DispatcherTimer 的 tick 事件没有被调用。 这是实体...

回答 1 投票 0

DataGrid 中的 CheckBox 不会触发绑定源中的属性更改

我有一个显示项目列表的 DataGrid 每行都有一个复选框,应更改相应数据类中的布尔字段 我预计字段值会发生变化并且

回答 1 投票 0

“调用线程必须是STA,因为很多UI组件都需要这个。”

我正在尝试用纯 C# 打开一个窗口。 为此,我创建了一个窗口构造函数(SGFWindow),从 System.Windows 扩展 Window 类: 命名空间SGF { 公共部分类

回答 3 投票 0

WPF - INotifyPropertyChanged 到父数据 - 不会在从复选框更改值时触发

我有一个显示项目列表的 DataGrid 每行都有一个复选框,应更改相应数据类中的布尔字段 我预计字段值会发生变化并且

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.