我對WPF很新,所以儘管發現了其他類似的線程,我的代碼有點不同,所以我不知道如何將這些解決方案應用到我的。C#WPF我怎麼能有多個DataContext
<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 =此。如果我不發表評論並刪除其他DataContext,那麼我的SortVariables變量將取出複選框的值。如果我有其他的DataContext用於點擊按鈕,那麼複選框將不會綁定。我需要它綁定,因爲我將它作爲參數傳遞給DataCompareVM()。
我對WPF和MVVM很陌生,所以原諒我的無知。
如果您希望您的複選框綁定到那裏,則'SortVariables'應該是DataCompareVM的一個屬性。雙擊綁定然後將複選框勾選/未勾選時,更新ViewModel中的Property的值。還要記住在設置不同的值時引發propertychanged事件。 – Fildor
我做到了,它的工作原理。謝謝! – nerdalert