我有什麼用戶等級: 用戶類窗口資源定義的DataTemplate和ContentControl中,當作爲DataContext的
public class MyButton
{
public String ButtonProperty { get; set; }
public String LabelProperty { get; set; }
public MyButton()
{
ButtonProperty = "MyButtonText!";
LabelProperty = "LabelText!";
}
}
的DataTemplate
<Window.Resources>
<DataTemplate DataType="{x:Type local:MyButton}">
<Border Width="100" Height="100" BorderThickness="2" BorderBrush="Aquamarine">
<StackPanel >
<Button>
<TextBlock Text="{Binding ButtonProperty}"></TextBlock>
</Button>
<Label Content="{Binding LabelProperty}"></Label>
</StackPanel>
</Border>
</DataTemplate>
</Window.Resources>
我想的DataTemplate將借鑑,而不是爲myButton
類的實例<Window x:Class="WpfApplication7.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication7"
Title="MainWindow" Height="500" Width="800">
<Window.Resources>
<DataTemplate DataType="{x:Type local:MyButton}">
<Border Width="100" Height="100" BorderThickness="2" BorderBrush="Aquamarine">
<StackPanel >
<Button>
<TextBlock Text="{Binding ButtonProperty}">
</TextBlock>
</Button>
<Label Content="{Binding LabelProperty}">
</Label>
</StackPanel>
</Border>
</DataTemplate>
</Window.Resources>
<!-- Create instance of MyButton in XAML-->
<local:MyButton></local:MyButton>
</Window>
它工作正常,但它不是我最後想要的。如果MyButton的實例將DataContext for Window會怎麼樣?
public MainWindow()
{
//Set instance of MyButton as DataContext
DataContext = new MyButton();
InitializeComponent();
}
我想我必須寫在XAML端
<ContentControl DataContext="{Binding}">
<!--MyButton XAML code from DataTemplate here -->
</ContentControl>
instead of
<local:MyButton></local:MyButton>
,但它並不在所有的工作。我做錯了什麼?
具有內容屬性,它的工作原理,thx。但是,雖然DataContext已經MyButton(它來自Window.DataContext我認爲?)我需要設置內容explisitly。即 ContentControl> –
monstr
是的,我的意思是。這是否按你的意願工作,或者你需要一些不同的東西。我會更新我的答案以澄清一些代碼。 關於DataContext,只要您沒有明確定義子類的DataContext,它就會沿着可視化樹傳遞。 – Arhiman