C# 引用 WPF 中的 Grid 来更改属性

标签 c# wpf

您好,我刚开始在 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/

相关文章:

C#抽象类说明

wpf - ContentPresenter.ContentSource与内容

c# - 使用 C# 读取数百万个小文件

c# - 应用程序每次运行时都在提取自身

wpf - 如何在 CheckedComboBoxEdit 中获取选定项?

c# - WPF/MVVM 选项卡式设计和避免绑定(bind)错误

WPF : Custom Button

C# 拆分字符串但保留分隔符

c# - 理论上存储非常非常大的数字

c# - 其项目c#中所有子项目的可点击 ListView