Tag: wpf

如何根据属性隐藏wpf datagrid列

我有以下WPF示例程序: XAML: 代码背后: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Flowers rose = new Flowers(); rose.Leaves = new ObservableCollection(); rose.Flag = false; Leaf L1 = new Leaf(); L1.Color = “rot”; L1.Size = 3; rose.Leaves.Add(L1); Leaf L2 = new Leaf(); L2.Color = “gelb”; L2.Size = 2; rose.Leaves.Add(L2); this.DataContext = rose; } } […]

与ViewModel绑定的MVVM动态菜单UI

我正在与一个关于LoB应用程序的团队合作。 我们希望有一个动态Menu控件,它根据登录的用户配置文件创建菜单。 在以前的开发方案(即ASP.NET)中,我们使用迭代描述集合的数据并动态生成MenuItem 。 在MVVM中我该怎么做? 我可以将XAML视图与描述菜单元素的ViewModel分开吗? 解: 通过评论员的输入,我能够使用ViewModel中的数据动态绑定Menu 。 这篇文章也很有帮助。 XAML: […] Menu数据类: public class Menu : ViewModelBase { public Menu() { IsEnabled = true; Children = new List(); } #region [ Menu Properties ] private bool _isEnabled; private string _menuText; private ICommand _command; private IList _children; public string MenuText { get { return _menuText; […]

DataTrigger不会更改Text属性

我试图在样式上使用数据触发器来更改属性。 符合“ 最小,完整和可validation的示例 ”要求…… 要重现,首先在Visual Studio中创建一个WPF应用程序。 在App.xaml.cs中: using System.ComponentModel; using System.Windows; namespace Foo{ /// /// Interaction logic for App.xaml /// public partial class App : Application, INotifyPropertyChanged { private bool _clicked; public bool Clicked { get { return this._clicked; } set { this._clicked = value; this.PropertyChanged?.Invoke( this, new PropertyChangedEventArgs( “Clicked” ) ); } } public […]

加密WPF应用程序中的凭据

在WPF应用程序中,我想提供典型的“记住我”选项来记住凭据,并在下次启动应用程序时自动使用它们。 使用单向散列显然不是一种选择,虽然我可以将凭据存储在独立存储或注册表中 ,但在加密凭据时有一个问题需要处理。 如果我使用对称密钥加密算法,我将需要将密钥存储在某处。 例如,如果密钥在内存中是硬编码的,那么我想可以很容易地反汇编.NET程序集并找到它。 在.NET中加密凭据并保持其安全性的最佳方法是什么,使加密密钥完全无法访问?

数据绑定似乎没有刷新

出于某种原因,我真的很挣扎。 我是wpf的新手,我似乎无法找到理解这个简单问题所需的信息。 我试图将文本框绑定到一个字符串,即程序活动的输出。 我为字符串创建了一个属性,但是当属性更改时,文本框不会。 我有一个listview的问题,但创建了一个刷新listview的调度程序。 我必须忽略一些重点,因为我认为使用wpf的一个好处是不必手动更新控件。 我希望有人能把我送上正确的方向。 在windowMain.xaml.cs中 private string debugLogText = “initial value”; public String debugLog { get { return debugLogText; } set { debugLogText = value; } } 在windowMain.xaml中 x:Name=”wndowMain” xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” DataContext=”{Binding RelativeSource={RelativeSource Self}}”

WPF WebBrowser鼠标事件未按预期工作

我在WPF页面中有一个WebBrowser对象,每当用户与页面交互时我都会尝试做某事。 我最初尝试使用与WebBrowser对象关联的事件,但它们似乎没有被触发。 下面是我的代码尝试执行的简化示例: webBrowser.MouseDown += new MouseButtonEventHandler(webBrowser_MouseDown); 使用事件处理程序: void webBrowser_MouseDown(object sender, MouseButtonEventArgs e) { System.Windows.MessageBox.Show(“Pressed”); } 但是,当我运行页面并在WebBrowser内部单击时,不会显示任何消息框。 道歉,最初我曾提到它是一个System.Controls WebBrowser而不是Forms浏览器。

使用C#Dispatcher

我正在建立一个聊天客户端,并不是100%确定如何使用dispatcher 。 所以问题是我有一个方法: public void LostConnection() { myGUI.chatBox.AppendText(“Lost connection to room: “+ myGUI.UsernameText.ToString() + “\r\n”); } 我是否需要使用Dispatcher.Invoke来表达(myGUI.chatBox… )的语句? 我感谢任何帮助。

如何构建具有未知列数的WPF数据网格

我需要从一个从txt获得的字符串数组的集合中构建和显示WPF数据网格。 问题是我不知道先验的是列数,即单个数组中的项数。 所以我在我的xaml中定义了 我试图在我的视图模型中填充它,但我不能简单地将我的数组的集合(Observable Collection)作为项目源,因为数据网格将只显示空行。 我也可以使用其他方法而不是Observable集合,因为我使用相同的方法生成我的数组 这是我的Observable Collection: ObservableCollection Rows = new ObservableCollection; 在这个方法中我填写了集合 foreach(ListViewItem item in wsettings.lista) { TextBlock line = item.Content as TextBlock; string txt = line.Text; string[] x = txt.Split(stringSeparators, StringSplitOptions.None); Rows.Add(x); } 请不要介意分手前的第一部分。 我从之前使用过的文本块列表视图中获取数据(我有理由)。 EDIT1:使代码更具可读性 EDIT2:标题必须是用户必须设置的combobox

WPF Combobox:文本框和下拉列表中的不同模板

这是我的combobox。 如何更改它,以便只有FullName出现在combobox的文本框部分中,而所有三列仍然出现在下拉部分?

WPF:将ContextMenu绑定到MVVM命令

假设我有一个带有返回命令的属性的窗口(实际上,它是一个带有ViewModel类中的Command的UserControl,但让我们尽可能简单地重现问题)。 以下作品: 但以下不起作用。 我得到的错误信息是 System.Windows.Data错误:4:找不到引用’ElementName = myWindow’的绑定源。 BindingExpression:路径= mycommand的; 的DataItem = NULL; target元素是’MenuItem’(Name =”); target属性是’Command’(类型’ICommand’) 为什么? 我该如何解决这个问题? 使用DataContext不是一个选项,因为此问题发生在可视树下,其中DataContext已包含正在显示的实际数据。 我已经尝试使用{RelativeSource FindAncestor, …} ,但这会产生类似的错误消息。