您好,我刚开始在 Visual Studio 中使用 WPF 和 XAML 制作应用程序。所以我有一个网格,我想在代码中更改其属性。
我的网格的属性:
<Grid HorizontalAlignment="Left"
Height="603"
Margin="0,51,0,0"
x:Name="usersPan"
VerticalAlignment="Top"
Width="1286">
我如何尝试改变它的属性
this.usersPan.SetValue(Grid.WidthProperty, PAN_SIZE);
usersPan.SetValue(Grid.WidthProperty, PAN_SIZE);
usersPan.Width = 0;
usersPan.Visibility = Visibility.Collapsed;
当我尝试这样做时 ^ 它说 userPan 的引用为空
谢谢
最佳答案
不,永远不要这样做。创建一个绑定(bind)到 Grid 的 Width 属性的 ViewModel,然后只需更改该值。
我怀疑你根本不需要这个。了解容器以及如何放置它们。
这些年来,我很少需要这样做,但我怀疑您不需要这样做。告诉我你在做什么。
编辑: 您有一个虚拟机需要实现 NotifyPropertyChanged 接口(interface)(我不会在这里这样做,有很多关于如何做到这一点的示例)
public class MainVM
{
public ObservableCollection<TabVM> TabsVms {get;set;}
public int SelectedIndex {get;set}
}
绑定(bind)到控件
<TabControl DataContext={TabsVMs} SelectedIndex="{Binding SelectedIndex}">
...
</TabControl>
在运行时您创建几个选项卡
var TabsVMs = new ObservableCollection<TabVM>();
TabsVMs.add(new TabVM());
TabsVMs.add(new TabVM());
TabsVMs.add(new TabVM());
然后在运行时更改索引的值。
MainVm.SelectedIndex = 1
并且相应的选项卡将被选中。
编辑: 我还可以推荐您使用Fody用于 MVVM 通知。 另外,当涉及到绑定(bind)时,我可以推荐您使用 WPF 检查器。一个方便的小工具
关于C# 引用 WPF 中的 Grid 来更改属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35294388/