wpf 相关问题

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

WPF 窗口从 VSTO 外接程序创建时不获取键盘输入

我有一个 Excel 加载项,可以在启动时显示 WPF 窗口 私有无效ThisAddIn_Startup(对象发送者,EventArgs e) { 获取Office版本(); 申请。

回答 1 投票 0

KeyDown 事件需要多次按下

我试图在按键盘上的左右键后更改 WPF 页面的某些元素。它工作得很好,我的问题是我需要按向右或向左键 3 次 e...

回答 1 投票 0

在 VS 2010 的 Winforms 项目中添加 WPF 窗口

在 VS 2010 中选择“添加新项目”时是否可以访问 winforms 项目中的所有 WPF 项目?默认情况下我只能访问 WPF userControl。 我想将 WPF 窗口添加到

回答 5 投票 0

如何使用 IHostBuilder 在 C# WPF 应用程序中配置 UserSecret

我设法在控制台应用程序中配置 UserSecret,我基本上用程序替换了应用程序,但似乎以下(简化的)代码似乎不适用于 WPF 应用程序。 公共静态

回答 1 投票 0

如何向WPF添加异步任务?

我一直在尝试使用 C# 在 WPF 中制作非常简单的记事本。那里的一切都工作正常(快捷方式、自定义事件等),但是当我向 RichTextBox 键入内容时,它开始滞后或增加一些延迟。我的

回答 1 投票 0

WPF、MVVM、工作单元

我正在使用MVVM构建WPF应用程序,但在开发过程中遇到了问题。如何使 ViewModel 类和 xaml 文件一起工作,即将类作为 DataContext 传递,如果

回答 1 投票 0

Environment.SpecialFolder.CommonApplicationData 返回程序文件/应用程序文件夹

我开发了WPF应用程序(.NET 4.5),它在CommonApplicationData文件夹中存储一些配置文件。 为此,我使用以下内容: 字符串 AppDataFolder = Environment.GetFolderPath(

回答 1 投票 0

ComboBox 值返回类型而不是值

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

回答 1 投票 0

无法从一个页面导航到另一页面

目标是从一个页面导航到另一个页面。 以下 C# 代码片段中的解决方案仅适用于 MainWindow,因为从页面调用时它不起作用。 私有无效 BtnDebug_C...

回答 1 投票 0

在 WPF 应用程序中使用 MediaElement 控件重复 gif 文件动画

我想使用 MediaElement 控件在 WPF 应用程序中重复播放 GIF (.gif) 文件。 下面我附上了我当前使用的代码。 我想使用 MediaElement 控件在 WPF 应用程序中重复播放 GIF (.gif) 文件。 下面我附上了我当前使用的代码。 <MediaElement x:Name="recImageMedia" Height="67" Margin="43,-70,816.2,0" LoadedBehavior="Play" Source="file://C:\Users\documents\visual studio 2013\Projects\Application\TempApplication\Snapshots\recordanim.gif" Visibility="Visible" /> StackOverflow 针对您的问题建议至少两种可能的解决方案。第一种是使用此处引用的 MediaTimeline 控件 MediaTimeline SO 答案 或者,您可能会发现利用 WPF MediaKit 中的 MediaElement 会有一些用处 WPF MediaKit SO 答案 这里有一个解决方案 <StackPanel> <!--1. Display GIF without animation--> <Image Source="loading.gif" Width="100" Height="100"/> <!--2. Display GIF and play once--> <MediaElement Name="me2" Source="loading.gif" UnloadedBehavior="Close" Width="100" Height="100"/> <!--3. Display GIF and loop playback, always repeat--> <MediaElement Name="me3" Source="loading.gif" ediaEnded="me_MediaEnded" UnloadedBehavior="Manual" Width="100" Height="100"/> </StackPanel> public partial class WindowSplash : Window { public WindowSplash() { InitializeComponent(); } private void me_MediaEnded(object sender, RoutedEventArgs e) { me3.Position = new TimeSpan(0, 0, 1); me3.Play(); } }

回答 2 投票 0

如何在 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

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