Tag: wpf

如何在xaml中使用List ?

所以我很确定在定义部分我需要包含以下内容: xmlns:s=”clr-namespace:System.Collections.Generic;assembly=?????” 但我只是不知道该怎样代替???的。 我想用代码做的是这样的: <s:List> {Binding Nodes} </s:List> 因此,当我进行objectDataProvider调用时,我可以将列表传递给它调用的方法(CreateNodes)… 我该怎么做呢? 谢谢! 编辑 – 可能是一个修复? 我只是把它放在方法中,而不是传递给列表,它只是一个app变量…我不知道app变量是不是很糟糕 List existingNodes; if (Application.Current.Properties.Contains(“ExistingNodes”)) existingNodes = Application.Current.Properties[“ExistingNodes”] as List; else existingNodes = new List();

在XAML中使用矩形形状作为剪辑

有没有办法可以使用普通的Rectangle(形状)作为XAML中另一个对象的剪辑的一部分。 看起来我应该能够,但解决方案正在逃避我.. 我知道我可以使用’RectangleGeometry’类型的方法,但我对上面提到的代码方面的解决方案更感兴趣。

wpf busyindicator没有出现

我的窗口上有这样的wpf忙指示符: 并在按钮单击我试图设置visiblity,指标的isBusy属性为真和可见。 void button_click(object sender, RoutedEventArgs e) { busyIndicator2.Visibility = System.Windows.Visibility.Visible; busyIndicator2.IsBusy = true; } 但是指标没有出现。 知道为什么吗?

扩展选择模式,虚拟化和IsSelected绑定

似乎在扩展选择模式下IsSelected绑定是错误的。 看起来只有选择中的最后一项超出范围才能正确处理。 示范: 使用Control选择项目0和98 。 当选择94 (没有控制 !)时,选择计数器应为1 ,但是你会看到3 。 向上滚动显示只有一个(最后一个)选择超出范围的项目未被选中。 以下是mcve: XAML: CS: public class NotifyPropertyChanged : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged([CallerMemberName] string property = “”) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); } public class Item : NotifyPropertyChanged { bool _isSelected; public bool IsSelected { get { return _isSelected; } set { […]

简单的ListView数据绑定

我正在尝试使用WPF和C#在ListView显示数据,我对我看到的不同示例和方法感到困惑。 我正在寻找一个类似于我的程序的完整工作示例,或者一个使它工作的先决条件列表。 如果我设法只显示我的collections中的一行数据,我会很高兴。 目前,列表视图不显示任何内容。 C#: public partial class MainWindow : Window { public ObservableCollection Rows { get; set; } public MainWindow() { InitializeComponent(); Rows = new ObservableCollection(); Rows.Add(new Row { ID = “42”, Category = “cat”, CharLimit = 32, Text = “Bonjour” }); } } public class Row { public string ID { get; set; […]

如何为WPF TreeView设置DataTemplate以显示列表的所有元素?

我想在WPF中使用TreeViews可视化以下数据结构: class MyDataContext { ICollectionView Outers {get;set;} //… } class Outer { string Name {get;set;} IEnumberable Actions {get;set;} } class Inner { string Description {get;set;} Command OnClick {get;set;} } 这是我到目前为止的尝试: 因为我得到以下InvalidOperationException ,所以这次访问有问题: Operation is not valid while ItemsSource is in use. Access and modify elements with ItemsControl.ItemsSource instead. 如果我删除内部TreeView,则没有exception(当然也没有按钮)。

关于在WPF中刷新UI的困惑

我听说这会刷新用户界面,但为什么会这样呢? Dispatcher调用此空操作,即它没有调用InvalidateMeasure() ,这将触发UI重新测量并重新排列并在操作中重新呈现。 这里的度量和安排流程在哪里update/refresh UI? private static Action EmptyDelegate = delegate() { }; public static void Refresh(UIElement uiElement) { uiElement.Dispatcher.Invoke(DispatcherPriority.Render, EmptyDelegate); } 有帮助吗? EDITED:我想知道为什么UI呈现的细节。 well that triggers ui update答案well that triggers ui update没有帮助我更多的人。

如果Command绑定解析为null,为什么启用了按钮?

好的,XAML非常简单,并使用MVVM绑定到ICommand SomeCommand { get; } 视图模型上的属性: Something 如果SomeCommand返回null ,则启用该按钮。 (与ICommand上的CanExecute(object param)方法CanExecute(object param) ,因为没有实例可以调用该方法) 现在的问题是:为什么启用按钮? 你会怎么做? 如果按“启用”按钮,显然没有任何调用。 按钮看起来很有用,这很丑陋。

如何在单独的线程中打开一个窗口?

我想这样做: Window newWindow = new Window(); newWindow.Show(); while (true) { Console.Write(“spin”); } 即,我正在主窗口中进行密集计算,但是这个新窗口(我试图用动画显示繁忙的指示器)没有响应(它被冻结)…… 所以我试着这样做: Thread thread = new Thread(() => { Window newWindow = new Window(); newWindow.Show(); }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); while (true) { Console.Write(“spin”); } 但新窗口仍然冻结等等。任何人都知道这里有什么问题吗?

ListView绑定中的SelectedItem

我是WPF的新手。 在我的示例应用程序中,我使用ListView来显示属性的内容。 我不知道如何将ListView中的SelectedItem绑定到属性,然后绑定到TextBlock。 Window.xaml MainWindow.xaml.cs Tman manager = new Tman(); private List persons; public List Persons { get { return this.persons; } set { if (value != null) { this.persons = value; } } } private Person currentSelectedPerson; public Person CurrentSelectedPerson { get { return currentSelectedPerson; } set { this.currentSelectedPerson = value; } } private […]