gpt4 book ai didi

C# WPF 如何拥有多个 DataContext

转载 作者:行者123 更新时间:2023-12-03 11:03:07 24 4
gpt4 key购买 nike

我对 WPF 很陌生,所以尽管找到了其他类似的线程,但我的代码有点不同,所以我不知道如何将这些解决方案应用于我的。

<grid>
<CheckBox
x:Name="sortChk"
Content="Sort Variables"
IsChecked="{Binding SortVariables}"
/>
<b:FlatButton Command="{Binding ClickCommand}">
<TextBlock Text="Compare" FontSize="13"></TextBlock>
</b:FlatButton>

</grid>

后面的代码看起来像这样
string dataset1FullPath = null;
string dataset2FullPath = null;
string dataset1FilePath = null;
string dataset2FilePath = null;
public bool SortVariables { get; set; }

public SingleCompareWindow(string path1, string path2)
{
InitializeComponent();

dataset1FullPath = path1;
dataset2FullPath = path2;
dataset1FilePath = System.IO.Path.GetDirectoryName(path1);
dataset2FilePath = System.IO.Path.GetDirectoryName(path2);

//DataContext = this;
DataContext = new DataCompareVM(dataset1FullPath, dataset2FullPath, dataset1FilePath, dataset2FilePath, SortVariables);
}

你可以看到我已经注释掉了DataContext = this。如果我不将其注释掉并删除其他 DataContext,那么我的 SortVariables 变量将采用复选框的值。如果我有其他 DataContext 用于单击按钮,则复选框将不会绑定(bind)。当我将它作为参数传递给 DataCompareVM() 时,我需要它来绑定(bind)。

我对 WPF 和 MVVM 很陌生,所以请原谅我的无知。

最佳答案

对于 WPF 控件,您不能拥有多个 DataContext,您应该将属性移动到 ViewModel。

关于C# WPF 如何拥有多个 DataContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45584732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com