wpf 相关问题

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

WPF 滚动条样式

是否可以创建如图所示的滚动条? 这张图片取自以下链接:http://codesdirectory.blogspot.be/2013/01/wpf-scrollviewer-control-style.html。 我尝试了这个例子...

回答 4 投票 0

WPF 和 MVVM:如何自动将焦点移动到下一个控件

我有一个带有 2 个文本框的小 WPF 窗口,已订购 TabIndex 0,1,并且我想在按 Enter 键时自动将焦点从第一个文本框移动到第二个文本框。 我使用 MVVM Light。 雷玛...

回答 2 投票 0

为什么我的用户控件尺寸会变大而不是变小?

我在使用简单控件时遇到问题:加载窗口时,它会正确加载用户控件。当我最大化时,用户控件及其内容按预期大小增大。当我恢复过来时,...

回答 1 投票 0

绑定到对象 ObservableCollection 中对象的属性

我有一个主窗口,其中包含带有切换按钮的DataGrid,DataGrid的项目源是对象的ObservableCollection。我想遵循以下内容:当用户检查切换时,IsActive2 将墨水...

回答 1 投票 0

WPF .Net Framework 4.8 的窗口 Toast 通知显示为空

我按照以下说明安装了 Microsoft.Toolkit.Uwp.Notifications NuGet 包: https://learn.microsoft.com/en-us/windows/apps/design/shell/tiles-and-notifications/send-local-toast?tabs=

回答 1 投票 0

如何在WPF中实现复选框列表框?

尽管在编写 Winforms 应用程序方面有一些经验,但 WPF 在最佳实践和设计模式方面的“模糊性”仍然让我困惑。 尽管在运行时填充了我的列表,但我的

回答 7 投票 0

Dependency Property 和 DataContext 赋值的顺序

从我的测试来看,如果我仅通过 XAM 设置一次 DataContext 和依赖属性,则似乎总是先分配 DataContext,然后再分配依赖属性...

wpf
回答 1 投票 0

如何告诉我的应用程序在特定文件夹中查找 dll

我正在编写一个 .net Framework 4.8.1 应用程序,该应用程序引用了来自几个不同第三方应用程序的大约 2 打 dll。这些 dll 又引用了来自...的更多(数千个)dll

回答 1 投票 0

如何使我的控件可聚焦?

我有控制 公共类 FocusTestControl :控制 { 公共 FocusTestControl() { DefaultStyleKey = typeof(FocusTestControl); } } 这是它的默认样式 <question vote="0"> <p>我有一个控制</p> <pre><code>public class FocusTestControl : Control { public FocusTestControl() { DefaultStyleKey = typeof(FocusTestControl); } } </code></pre> <p>这是它的默认样式</p> <pre><code> &lt;Style TargetType=&#34;local:FocusTestControl&#34;&gt; &lt;Setter Property=&#34;Focusable&#34; Value=&#34;True&#34; /&gt; &lt;Setter Property=&#34;Template&#34;&gt; &lt;Setter.Value&gt; &lt;ControlTemplate&gt; &lt;Grid&gt; &lt;Border Background=&#34;AliceBlue&#34; /&gt; &lt;/Grid&gt; &lt;/ControlTemplate&gt; &lt;/Setter.Value&gt; &lt;/Setter&gt; &lt;/Style&gt; </code></pre> <p>我将此控件放在窗口上:</p> <pre><code>&lt;Window x:Class=&#34;MakeWpfControlFocusable.MainWindow&#34; xmlns=&#34;http://schemas.microsoft.com/winfx/2006/xaml/presentation&#34; xmlns:x=&#34;http://schemas.microsoft.com/winfx/2006/xaml&#34; xmlns:local=&#34;clr-namespace:MakeWpfControlFocusable&#34; Title=&#34;MainWindow&#34; Height=&#34;350&#34; Width=&#34;525&#34;&gt; &lt;Grid&gt; &lt;Grid.RowDefinitions&gt; &lt;RowDefinition /&gt; &lt;RowDefinition Height=&#34;35&#34; /&gt; &lt;/Grid.RowDefinitions&gt; &lt;local:FocusTestControl /&gt; &lt;StackPanel Grid.Row=&#34;1&#34; Orientation=&#34;Horizontal&#34;&gt; &lt;TextBlock Text=&#34;Focused element: &#34; /&gt; &lt;TextBlock Text=&#34;{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=KeyboardFocusedElement}&#34; /&gt; &lt;TextBox Text=&#34;Text&#34; /&gt; &lt;/StackPanel&gt; &lt;/Grid&gt; </code></pre> <p></p> <p>但是单击控件并不会使其聚焦(我的意思是 KebordFocus)</p> <p>实际上,我的任务是处理 KeyDown 和 KeyUp 事件。但当元素没有键盘焦点时这是不可能的。</p> </question> <answer tick="true" vote="1"> <p>可以通过按 Tab 键盘键来设置键盘焦点。但点击 <pre><code>Control</code></pre> 时并未设置。我已订阅 <pre><code>MouseDown</code></pre> 事件并在处理程序中手动设置焦点。</p> <pre><code>public class FocusTestControl : Control, IInputElement { public FocusTestControl() { DefaultStyleKey = typeof(FocusTestControl); MouseDown += FocusTestControl_MouseDown; } void FocusTestControl_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { Keyboard.Focus(this); } } </code></pre> </answer> </body></html>

回答 0 投票 0

我如何知道谁卸载了WPF应用程序

我有一个 WPF 应用程序,使用命令 dotnetpublish -r win-x64 /p:PublishSingleFile=true /p:InincludeNativeLibrariesForSelfExtract=true --self-contained true --output ... 部署到一个 exe 中

回答 1 投票 0

WPF 以编程方式将数据网格组合框列绑定到 itemsource

在我的数据网格中,其中一列是 DataGridComboBoxColumn,我试图在每一行中显示不同的下拉菜单。在 XAML 中创建组合框而不是通过编程来创建组合框是一项简单的任务...

回答 3 投票 0

标签内容上的 WPF StringFormat

我想将字符串绑定格式化为 Amount is X,其中 X 是绑定到标签的属性。 我见过很多例子,但以下不起作用: 我想将字符串绑定格式设置为 Amount is X,其中 X 是绑定到标签的属性。 我见过很多例子,但以下不起作用: <Label Content="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" /> 我也尝试过这些组合: StringFormat=Amount is {0} StringFormat='Amount is {}{0}' StringFormat='Amount is \{0\}' 我什至尝试将绑定属性的数据类型更改为 int、string和 double。似乎什么都不起作用。这是一个非常常见的用例,但似乎不受支持。 这不起作用的原因是 Label.Content 属性的类型为 Object,并且 Binding.StringFormat 仅在绑定到 String 类型的属性时使用。 发生的事情是: Binding 正在对您的 MaxLevelOfInvestment 值进行装箱并将其存储为 Label.Content 属性作为装箱的十进制值。 标签控件有一个包含 ContentPresenter 的模板。 由于未设置 ContentTemplate,因此 ContentPresenter 会查找为 DataTemplate 类型定义的 Decimal。当它找不到时,它会使用默认模板。 ContentPresenter 使用的默认模板通过使用标签的 ContentStringFormat 属性来呈现字符串。 有两种可能的解决方案: 使用 Label.ContentStringFormat 而不是 Binding.StringFormat,或者 使用 String 属性(例如 TextBlock.Text)而不是 Label.Content 这里是如何使用Label.ContentStringFormat: <Label Content="{Binding Path=MaxLevelofInvestment}" ContentStringFormat="Amount is {0}" /> 以下是如何使用 TextBlock: <TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" /> 注意:为了简单起见,我在上面的解释中省略了一个细节:ContentPresenter实际上使用了自己的Template和StringFormat属性,但在加载过程中,它们会自动模板绑定到ContentTemplate和ContentStringFormat属性Label,所以看起来 ContentPresenter 实际上正在使用 Label 的属性。 制作一个通用的StringFormatConverter : IValueConverter。将格式字符串传递为 ConverterParameter. Label Content="{Binding Amount, Converter={...myConverter}, ConverterParameter='Amount is {0}'" 此外,当格式字符串中需要多个对象时,请使用 StringFormatMultiConverter : IMultiValueConverter,例如 Completed {0} tasks out of {1}。 我刚刚检查过,由于某种原因它不适用于 Label,可能是因为它在内部使用 ContentPresenter 来表示 Content 属性。您可以使用 TextBlock 来代替,这样就可以了。如果您需要继承样式、行为等,您也可以将下面的 TextBlock 摘录放在 Label 的内容中。 <TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is \{0\}'} /> 尝试使用转换器...... <myconverters:MyConverter x:Key="MyConverter"/> <Label Content="{Binding Path=MaxLevelofInvestment, Converter={StaticResource MyConverter"} /> public class MyConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return String.Format("Amount is {0}", value); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return value; } }

回答 4 投票 0

使用 StringFormat 将字符串添加到 WPF XAML 绑定

我有一个 WPF 4 应用程序,其中包含一个 TextBlock,该 TextBlock 具有与整数值(在本例中为摄氏度温度)的单向绑定。 XAML 看起来像这样: 我有一个 WPF 4 应用程序,其中包含一个 TextBlock,它单向绑定到整数值(在本例中为摄氏度温度)。 XAML 看起来像这样: <TextBlock x:Name="textBlockTemperature"> <Run Text="{Binding CelsiusTemp, Mode=OneWay}"/></TextBlock> 这对于显示实际温度值来说效果很好,但我想格式化该值,使其包含°C而不仅仅是数字(30°C而不只是30)。我一直在阅读有关 StringFormat 的内容,并且看到了几个像这样的通用示例: // format the bound value as a currency <TextBlock Text="{Binding Amount, StringFormat={}{0:C}}" /> 和 // preface the bound value with a string and format it as a currency <TextBlock Text="{Binding Amount, StringFormat=Amount: {0:C}}"/> 不幸的是,我见过的所有示例都没有像我尝试那样将字符串附加到绑定值。我确信它一定很简单,但我没有运气找到它。谁能向我解释一下该怎么做吗? 您的第一个示例实际上就是您所需要的: <TextBlock Text="{Binding CelsiusTemp, StringFormat={}{0}°C}" /> 请注意,在绑定中使用 StringFormat 属性似乎仅适用于“文本”属性。 将此用于 Label.Content 将不起作用 如果您在字符串中间有 Binding 或多个绑定,那么这里有一个非常适合可读性的替代方案: <TextBlock> <Run Text="Temperature is "/> <Run Text="{Binding CelsiusTemp}"/> <Run Text="°C"/> </TextBlock> <!-- displays: 0°C (32°F)--> <TextBlock> <Run Text="{Binding CelsiusTemp}"/> <Run Text="°C"/> <Run Text=" ("/> <Run Text="{Binding Fahrenheit}"/> <Run Text="°F)"/> </TextBlock> 在 xaml 中 <TextBlock Text="{Binding CelsiusTemp}" /> 在ViewModel中,这种设置值的方式也有效: public string CelsiusTemp { get { return string.Format("{0}°C", _CelsiusTemp); } set { value = value.Replace("°C", ""); _CelsiusTemp = value; } }

回答 4 投票 0

WPF ListView 无法显示自定义用户组件

最近在尝试制作一个用户聊天程序,需要使用WPF ListView来一一展示聊天消息。为了使维护更容易,我决定使用自定义组件作为单个...

回答 1 投票 0

无法在WPF项目.net core 3.0中添加appsettings.json

我正在使用 .net Core 3.0 创建一个 WPF 项目,但在将项目 appsettings.json 文件添加到我的项目(用于存储数据库连接字符串)时遇到问题。 我通常会...

回答 5 投票 0

WPF 不刷新图像(缓存问题)

我在应用程序中动态加载图像时遇到了一个大问题。当我启动应用程序时,占位符图像源为空。当我单击按钮时,会创建并加载图像...

回答 1 投票 0

使用 Windows 服务本地托管的 WCF 服务 - 与 GUI 的命名管道通信 - “管道已结束。(109, 0x6d)。”

我已经阅读了Microsoft Page上有关Windows平台上进程间通信的文档,所以我开始做一些演示项目来测试它是如何工作的等。因为我只想...

回答 1 投票 0

ComboBox 选择返回 IndexOutofBounds 错误

我正在设置,第一个组合框(名称=组合3)的选择决定第二个组合框(名称=组合4)将显示的内容。这很好用。 现在我正在尝试制作第二个组合框

回答 4 投票 0

在 C# WPF 中禁用单个 DataGrid 单元

我需要基于布尔值禁用 DataGrid 单元格中的按钮。当我尝试下面的代码时,整行被禁用。 我尝试过的 <question vote="0"> <p>我需要基于布尔值禁用 DataGrid 单元格中的按钮。当我尝试下面的代码时,整行被禁用。</p> <p>我尝试过的事情</p> <pre><code> &lt;DataGrid.CellStyle&gt; &lt;Style TargetType=&#34;DataGridCell&#34;&gt; &lt;Style.Triggers&gt; &lt;DataTrigger Binding=&#34;{Binding Enabled}&#34; Value=&#34;false&#34;&gt; &lt;Setter Property=&#34;IsEnabled&#34; Value=&#34;False&#34;/&gt; &lt;/DataTrigger&gt; &lt;/Style.Triggers&gt; &lt;/Style&gt; &lt;/DataGrid.CellStyle&gt; </code></pre> <p>行中的按钮</p> <pre><code>&lt;DataGridTemplateColumn Header=&#34;Azione&#34; Width=&#34;3*&#34;&gt; &lt;DataGridTemplateColumn.CellTemplate&gt; &lt;DataTemplate&gt; &lt;Button Click=&#34;btnEffettuaOperazioni_Click&#34;&gt; &lt;TextBlock Text=&#34;Effettua operazioni&#34;/&gt; &lt;/Button&gt; &lt;/DataTemplate&gt; &lt;/DataGridTemplateColumn.CellTemplate&gt; &lt;/DataGridTemplateColumn&gt; </code></pre> </question> <answer tick="false" vote="0"> <p>这是一个工作示例。看一看 : 如果选中该复选框,则仅禁用该按钮</p> <p>主窗口.xaml</p> <pre><code>&lt;Window x:Class=&#34;TestWPF.MainWindow&#34; xmlns=&#34;http://schemas.microsoft.com/winfx/2006/xaml/presentation&#34; xmlns:x=&#34;http://schemas.microsoft.com/winfx/2006/xaml&#34; xmlns:d=&#34;http://schemas.microsoft.com/expression/blend/2008&#34; xmlns:mc=&#34;http://schemas.openxmlformats.org/markup-compatibility/2006&#34; xmlns:local=&#34;clr-namespace:TestWPF&#34; mc:Ignorable=&#34;d&#34; Title=&#34;MainWindow&#34; Height=&#34;450&#34; Width=&#34;800&#34; Loaded=&#34;Window_Loaded&#34;&gt; &lt;ScrollViewer&gt; &lt;DataGrid HorizontalAlignment=&#34;Stretch&#34; VerticalAlignment=&#34;Stretch&#34; AutoGenerateColumns=&#34;False&#34; ItemsSource=&#34;{Binding Items}&#34;&gt; &lt;DataGrid.Resources&gt; &lt;Style TargetType=&#34;{x:Type Button}&#34; x:Key=&#34;ButtonStyle&#34;&gt; &lt;Style.Triggers&gt; &lt;DataTrigger Binding=&#34;{Binding IsChecked}&#34; Value=&#34;True&#34;&gt; &lt;Setter Property=&#34;IsEnabled&#34; Value=&#34;False&#34; /&gt; &lt;/DataTrigger&gt; &lt;/Style.Triggers&gt; &lt;/Style&gt; &lt;/DataGrid.Resources&gt; &lt;DataGrid.Columns&gt; &lt;DataGridCheckBoxColumn Binding=&#34;{Binding IsChecked}&#34; /&gt; &lt;DataGridTextColumn Binding=&#34;{Binding Value}&#34; /&gt; &lt;DataGridTemplateColumn Header=&#34;Azione&#34; Width=&#34;3*&#34; &gt; &lt;DataGridTemplateColumn.CellTemplate&gt; &lt;DataTemplate &gt; &lt;Button Click=&#34;btnEffettuaOperazioni_Click&#34; Style=&#34;{StaticResource ButtonStyle}&#34;&gt; &lt;TextBlock Text=&#34;Effettua operazioni&#34;/&gt; &lt;/Button&gt; &lt;/DataTemplate&gt; &lt;/DataGridTemplateColumn.CellTemplate&gt; &lt;/DataGridTemplateColumn&gt; &lt;/DataGrid.Columns&gt; &lt;/DataGrid&gt; &lt;/ScrollViewer&gt; </code></pre> <p>MainWindow.xaml.cs</p> <pre><code>using System.Collections.ObjectModel; using System.Windows; namespace TestWPF { /// &lt;summary&gt; /// Interaction logic for MainWindow.xaml /// &lt;/summary&gt; public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = this; } public class Data { public bool IsChecked { get; set; } public string Value { get; set; } } public ObservableCollection&lt;Data&gt; Items { get; } = new ObservableCollection&lt;Data&gt;(); private void Populate() { Items.Add(new Data() { IsChecked = true, Value = &#34;Lorem Ipsum&#34; }); Items.Add(new Data() { IsChecked = true, Value = &#34;Lorem Ipsum&#34; }); Items.Add(new Data() { IsChecked = true, Value = &#34;Lorem Ipsum&#34; }); Items.Add(new Data() { IsChecked = true, Value = &#34;Lorem Ipsum&#34; }); Items.Add(new Data() { IsChecked = true, Value = &#34;Lorem Ipsum&#34; }); Items.Add(new Data() { IsChecked = true, Value = &#34;Lorem Ipsum&#34; }); Items.Add(new Data() { IsChecked = true, Value = &#34;Lorem Ipsum&#34; }); } private void Window_Loaded(object sender, RoutedEventArgs e) { Populate(); } private void btnEffettuaOperazioni_Click(object sender, RoutedEventArgs e) { MessageBox.Show(&#34;Hello World&#34;); } } } </code></pre> </answer> </body></html>

回答 0 投票 0

在WPF中获取海康威视摄像头视图

我有一台海康威视摄像头。我需要在我的应用程序中从该相机获取图像。所有SDK示例都是用winform制作的,我正在尝试将其集成到wpf中。在给出的示例 SDK 中,图片...

回答 1 投票 0

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