我需要綁定,以便將內容控件的內容設置爲TreeView或ListBox的SelectedValue。最近更改的SelectedValue應該提供ContentControl的內容。WPF-有沒有辦法綁定到TreeView和ListBox的SelectedValues?
0
A
回答
1
我能夠使用以下概念得到這個工作。
- 將內容控件綁定到只讀屬性「SelectedItem」(使用私有屬性_selectedItem)。
- 將ListBox.SelectedItem綁定到讀/寫屬性「SelectedItemLB」。
- 在SelectedItemLB設置器中,設置_selectedItem的值,併爲SelectedItem引發PropertyChanged事件。
- 爲VreeView.SelectedItemChanged創建一個處理程序,該處理程序設置_selectedItem的值並引發SelectedItem的PropertyChanged事件。
這裏是我的全碼:
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
this.items = new List<object>();
this.items.Add(new Car("Green"));
this.items.Add(new Car("Blue"));
this.items.Add(new Car("Red"));
this._selectedItem = this.items[0];
this.treeView1.SelectedItemChanged += new RoutedPropertyChangedEventHandler<object>(treeView1_SelectedItemChanged);
this.DataContext = this;
}
void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
this._selectedItem = treeView1.SelectedItem;
PropertyChanged(this, new PropertyChangedEventArgs("SelectedItem"));
}
private List<object> items;
public List<object> Items
{
get { return items; }
set { items = value; }
}
public object SelectedItemLB
{
get { return _selectedItem; }
set
{
_selectedItem = value;
if (this.PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("SelectedItem"));
}
}
}
private object _selectedItem;
public object SelectedItem
{
get { return _selectedItem; }
}
public event PropertyChangedEventHandler PropertyChanged;
}
的XAML很簡單:
<StackPanel>
<ListBox Name="listBox1" ItemsSource="{Binding Path=Items}" SelectedItem="{Binding Path=SelectedItemLB, Mode=TwoWay}" ></ListBox>
<TreeView Name="treeView1" ItemsSource="{Binding Path=Items}">
<TreeView.Resources>
<Style TargetType="TreeViewItem">
<Setter Property="IsSelected" Value="{Binding Path=IsSelected}"></Setter>
</Style>
</TreeView.Resources>
</TreeView>
<ContentControl Content="{Binding Path=SelectedItem.Color}"></ContentControl>
</StackPanel>
1
我想不出一種直接做到這一點的方法。然而,有幾個簡單的解決方案。
A.使用事件來設置Content
共同處理程序只需連接到您的ItemsControl
S的SelectedValueChanged
事件。只要其中一個人改變其選擇,處理程序就會將Content
設置爲任何被選中的。我認爲這是最簡單的。
B.使用中介性質
綁定每個ItemsControl
到屬性的SelectedValue
。在物業的二傳手,也設置Content
等於value
。這使您可以使用數據綁定而不是事件處理程序,但它仍然需要您編寫代碼隱藏功能,並且它不會爲您購買太多。當然,如果你已經綁定到其他用途的屬性,幾乎沒有額外的成本(每個設置器中只有一個賦值),所以這種方法可能更可取。
相關問題
- 1. 有沒有辦法將一個方法綁定到ListBox的DataTemplate?
- 2. 有沒有辦法將DataTrigger綁定到WPF中的模板?
- 3. 有沒有辦法綁定到Keyboard.FocusedElement?
- 4. 有沒有辦法定義WPF自定義綁定?
- 5. 有沒有辦法動態地暴露WPF中的綁定?
- 6. 有沒有辦法將WPF綁定標記轉換爲綁定類的實例?
- 7. WPF - 路徑幾何...有沒有辦法綁定數據屬性?
- 8. WPF綁定到Listbox selectedItem
- 9. WPF ListBox:綁定到ObservableCollection
- 10. WPF TreeView綁定
- 11. WPF TreeView綁定
- 12. Treeview綁定wpf
- 13. WPF Treeview綁定
- 14. TreeView綁定WPF
- 15. wpf treeview綁定
- 16. 無法綁定WPF TreeView
- 17. WPF:綁定的TreeView
- 18. wpf treeview綁定到xml
- 19. 在WPF中綁定到TreeView
- 20. 如何綁定到WPF TreeView?
- 21. 有沒有辦法將數據綁定到WPF中編輯的雙打列表?
- 22. WPF綁定Listbox layoutpanel
- 23. WPF ListBox +綁定+ IDataErrorInfo =?
- 24. 有沒有辦法在默認的treeview中定義多個itemtemplate?
- 25. 有沒有辦法列出所有綁定到Ember.Object?
- 26. WPF中沒有RootNode的TreeView
- 27. 有沒有辦法將屬性綁定到tornadofx中的appConfig?
- 28. 有沒有辦法禁用綁定到const引用的臨時?
- 29. Flex:有沒有辦法將ComboBox的selectedItem綁定到變量上?
- 30. 有沒有簡單的方法綁定到WPF中的父行?