TabItemスタイル内にはボタンがあります。そのボタンには(親)TabItemを送るコマンドがあります。 SilverlightにはRelativeSourceはありません。しかし、単にElementnameを使うことはできません。私のTabItemはスタイル内に名前がないからです。Silverlight 4:ChildControlをParentControlにバインドする
<Style TargetType="sdk:TabItem">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding TabCaption}"/>
<Button Margin="8,0,0,0"
Command="local:Commands.CloseTabItem"
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type sdk:TabItem}}}"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center">
</Button>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
これは、コマンドのメソッド内のコードのようになります。
private void OnCloseTabItemExecute(object sender, ExecutedRoutedEventArgs e)
{
TabItem parent = e.Parameter as TabItem;
if (parent != null)
{
FrameworkElement view = (parent as TabItem).Content as FrameworkElement;
string regionName = RegionManager.GetRegionName(view);
_regionManager.Regions[regionName].Remove(view);
}
}
は、どのように私はSilverlightの4内の子コントロールのコマンドパラメータとして、親コントロール(のTabItem)に渡すことができますか?
非常に高く評価されています。
あなたのヒントをありがとう。コマンドのメソッドの最後にButtonオブジェクトを正常に取得しています。ただし、Parentプロパティは、上のStackPanelを示します。私はまだ掘削することができますか?私は別の親と一緒にこれをやってみましたが、それは私にはできませんでした。ありがとうございました – Houman