Tag: xaml

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, …} ,但这会产生类似的错误消息。

在WPF中,您可以在没有代码的情况下过滤CollectionViewSource吗?

真的,这个主题说明了一切。 并不是说我不能拥有代码。 它只是唠叨我。

将事件传递给ViewModel的最佳方法是什么?

案例是:我有一个控件的事件,我希望我的ViewModel作出反应。 目前我正在通过执行隐藏按钮的命令来执行此操作,如下例所示。 在View.xaml中: 在View.xaml.cs中: private void SearchResultRefreshed(object sender, EventArgs e) { if (SearchResultRefreshedButton.Command != null) { SearchResultRefreshedButton.Command.Execute(SearchResultGrid.ResultRowCount); } } 这很好用,但对我来说看起来像是一个黑客。 我想知道是否有更好的(标准)方式这样做? 我找不到任何例子,这就是我自己“发明”的东西。

XAML GridView ItemTemplate无法绑定到控件

我有一个带有ItemTemplate的GridView ,它包含一个Custom控件: 这是我的自定义用户控件: 它的代码背后: public sealed partial class HabitacionControl : UserControl { public HabitacionControl() { this.InitializeComponent(); } public MyClass Ubicacion { get { return (MyClass)GetValue(UbicacionProperty); } set { SetValue(UbicacionProperty, value); } } // Using a DependencyProperty as the backing store for Ubicacion. This enables animation, styling, binding, etc… public static readonly DependencyProperty UbicacionProperty = DependencyProperty.Register(“Ubicacion”, […]

实现WPF TextBoxes的validation

我有3个TextBoxes( Id1 , Name和Salary )。 Id和Salary应包含整数, Name应仅包含字符。 我需要对TextBox进行validation,它应该在输入错误的字符或整数时显示错误。 也可以只在没有代码隐藏的Xaml中完成吗? 请帮我提供所需的代码 这是Xaml代码:

如何使用DataTemplate访问列表框中的特定项目?

我有一个ListBox,包括一个带有2个StackPanels的ItemTemplate。 我想要访问的第二个StackPanel中有一个TextBox。 (将其可见性更改为true并接受用户输入)触发器应为SelectionChangedEvent。 因此,如果用户单击ListBoxItem,TextBlock将变为不可见,TextBox将变为可见。 XAML代码: 我想有几种方法可以解决这个问题,但我没有尝试过。 我目前的做法是这样的 private void ContactListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { ListBoxItem listBoxItem = ContactListBox.SelectedItem as ListBoxItem; DataTemplate listBoxTemplate = listBoxItem.ContentTemplate; // How to access the DataTemplate content? StackPanel outerStackPanel = listBoxTemplate.XXX as StackPanel; StackPanel innerStackPanel = outerStackPanel.Children[1] as StackPanel; TextBox nameBox = innerStackPanel.Children[0] as TextBox; TextBlock nameBlock = innerStackPanel.Children[1] as TextBlock; […]

依赖属性收到xaml更改时的回调

当我在运行时设置IsClosed的值时, OnIsClosedChanged()被称为罚款。 但是,Designer会设置属性的值,但不会调用OnIsClosedChanged() 。 public static DependencyProperty IsClosedProperty = DependencyProperty.Register(“IsClosed”, typeof(bool), typeof(GroupBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)); public bool IsClosed { get { return (bool)this.GetValue(IsClosedProperty); } set { if ((bool)this.GetValue(IsClosedProperty) == value) return; this.SetValue(IsClosedProperty, value); OnIsClosedChanged(); } } private void OnIsClosedChanged() { _rowDefContent.Height = new GridLength((IsClosed ? 0 : 1), GridUnitType.Star); } 显然,Designer不会修改IsClosedProperty ,只有IsClosedProperty会收到xaml更改。 我的问题是:如何在Designer中修改了值后运行IsClosed 。 或者至少为非运行时更改添加一些逻辑。

将项添加到WPF ListView中的列

我现在一直在努力将项目添加到ListView 2列。 在我的Windows窗体应用程序中,我有这样的事情: // In my class library: public void AddItems(ListView listView) { var item = new ListViewItem {Text = “Some Text for Column 1”}; item.SubItems.Add(“Some Text for Column 2”); listView.Items.Add(item); } 然后我会从Form.cs调用这个类。 我怎么能在WPF中这样做? 最好,我不想使用大量的XAML。