私はC#で自分の拳UserControlを作ろうとしています。これは、生活の質を改善したTabControllです。目標はさまざまなプロジェクトでそれを使用できるようにするため、可能な限り汎用的でなければなりません。UserControls ContentTemplateを公開する
これまでは、DependencyPropertyを通じてItemSourceを公開してきました。しかし、私はContentTemplateプロパティで同じことをする方法を吸う。
ここでは、これまでに私のコードの例です:
XAML:背後
<UserControl ...>
<UserControl.Resources>
<!-- some styles and templates -->
</UserControl.Resources>
<TabControl ItemsSource="{Binding ItemsSource}" SelectedIndex="{Binding selectedIndex}"
Style="{StaticResource FixatedTabControl}" ItemTemplateSelector="{StaticResource myDataTemplateSelector}"/>
</UserControl>
コード:
public partial class DynamicTabControl : UserControl, INotifyPropertyChanged
{
public DynamicTabControl()
{
InitializeComponent();
this.DataContext = this;
}
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(IEnumerable<ITabItem>), typeof(DynamicTabControl));
public IEnumerable<ITabItem> ItemsSource
{
get { return (IEnumerable<ITabItem>)GetValue(ItemsSourceProperty); }
set { SetValue(ItemsSourceProperty, value); }
}
}
私はそうのようなDynamicTabControlを使用することができます。
<Window x:Class="Demo.MainWindow"
...
xmlns:local="clr-namespace:Demo"
xmlns:foo="clr-namespace:DynamicTabUserControl"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<foo:DynamicTabControl x:Name="testTabContr" ItemsSource="{Binding data}">
</foo:DynamicTabControl>
</Grid>
</Window>
を
しかし、私はそれを可能にすることができます変更/追加のcontContemplateのTabControlの? 私はそのようなように振る舞うために取得したいと思い:私はまだ学んでいる
<Window x:Class="Demo.MainWindow"
...
xmlns:local="clr-namespace:Demo"
xmlns:foo="clr-namespace:DynamicTabUserControl"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<foo:DynamicTabControl x:Name="testTabContr" ItemsSource="{Binding data}">
<foo:DynamicTabControl.TabControl.ContentTemplate>
<DataTemplate>
<TextBox Text="{Binding someData}"/>
</DataTemplate>
</foo:DynamicTabControl.TabControl.ContentTemplate>
</foo:DynamicTabControl>
</Grid>
</Window>
ので、私を助けてください。 ありがとうございます。
外部から完全なテンプレートをカスタマイズするには、カスタムコントロール( 'UserControl'ではなく)を使用する必要があります。テンプレートが内部のいくつかの要素のテンプレートであれば、既に行ったように - 依存関係プロパティを介して公開し、変更を監視し、対応する要素に設定します。 – Sinatr