[英]XAML - Binding ElementName between two UserControls
我目前正在學習 WPF 和數據綁定讓我......感謝任何幫助。
所以我有兩個 UserControl,比如說 1 和 2,在里面,它們只是在 MainWindow.xaml 中並排顯示。 在 UserControl2 中,我想將一些東西綁定到 UserControl1 的一個元素上。 就像下面的代碼失敗(顯然):
{Binding ElementName=FolderView, Path=SelectedValue, Mode=OneWay}
其中FolderView是UserControl1中的TreeView
,我想在UserControl2中獲取它的屬性。
我對 MVVM 還是很陌生。 我認為 static ViewModel 會解決它(如果這不好,請糾正我)。 但是TreeView
的SelectedValue
屬性是readonly
的,我不知道如何將它綁定到 ViewModel。
就像你說的 MVVM 可以提供幫助。
您為每個用戶控件創建一個視圖。 然后為它們中的每一個創建一個 Viewmodel。 我第一次看到這兩個問題時遇到了同樣的問題,他們幫我解決了你的問題。 如果您需要更多幫助,請發表評論,我可以解釋更多。
https://softwareengineering.stackexchange.com/questions/408890/wpf-usercontrol-reuse-with-mvvm
忘記所有的綁定。 原來,當TreeView
的SelectedItemChanged
時。 RoutedPropertyChangedEventArgs<object>
的NewValue
包含我需要的信息,即Tag
屬性。
private void FolderView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
MainViewModel.TVVM.TESTBOX = ((TreeViewItem)(e.NewValue)).Tag.ToString();
}
MainViewModel.TVVM.TESTBOX
只是一個{get;set;}
而MainViewModel.TVVM
是MainViewModel
的一個 static (這是我能想到的唯一方法,如果 static 在這種情況下是好的)屬性。 只是將所有相關代碼放在這里以供將來參考。
樹視圖VM.cs
public class TreeViewVM : VMBase
{
private string _testbox;
public string TESTBOX
{
get { return _testbox; }
set { _testbox = value;
OnPropertyChange(nameof(TESTBOX));}
}
}
主視圖模型.cs
public class MainViewModel
{
public static TreeViewVM TVVM { get; set; }
public MainViewModel()
{
TVVM = new TreeViewVM();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.