我在佈局根中的WPF中有一個列表框。如何綁定到數據上下文之外的東西
我也有一個框架在佈局根目錄中。
列表框由具有字符串(Name)和框架元素(UI)的項組成。
如何將框架的內容綁定爲列表框所選項目屬性的UI屬性?
如果你需要一個代碼隱藏,你將如何在MVVM
我在佈局根中的WPF中有一個列表框。如何綁定到數據上下文之外的東西
我也有一個框架在佈局根目錄中。
列表框由具有字符串(Name)和框架元素(UI)的項組成。
如何將框架的內容綁定爲列表框所選項目屬性的UI屬性?
如果你需要一個代碼隱藏,你將如何在MVVM
我用來代替構圖ContentControl中,因爲我有問題,結合內容性質,我從來沒有將它綁定更改後刷新。我沒有做適當的MVVM,數據不應該託管在視圖內。
XAML:
<Window.Resources>
<CollectionViewSource x:Key="CVS" Source="{Binding}" />
</Window.Resources>
<StackPanel DataContext="{Binding Source={StaticResource CVS}}">
<ListBox
ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True"
DisplayMemberPath="Name">
</ListBox>
<ContentControl Content="{Binding Path=UI}" />
</StackPanel>
背後代碼:
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
namespace BindDemo
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
Data = new List<DataItem>();
Data.Add(new DataItem("TextBox", new TextBox(){ Text="hello" }));
Data.Add(new DataItem("ComboBox", new ComboBox()));
Data.Add(new DataItem("Slider", new Slider()));
DataContext = Data;
}
public List<DataItem> Data
{
get; private set;
}
}
public class DataItem
{
public DataItem(string name, FrameworkElement ui)
{
Name = name;
UI = ui;
}
public string Name { get; private set; }
public FrameworkElement UI { get; private set; }
}
}
做到這一點聽起來要顯示對象和詳細信息,選擇對象的列表。如果我是正確的,在MVVM溶液可以如下:
<ListView ItemsSource="{Binding ObjectsList}" IsSynchronizedWithCurrentItem="True" />
<ContentControl Content="{Binding ObjectsList}">
<ContentControl.ContentTemplate>
<DataTemplate>
<!-- details template -->
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>