DataTemplateのコントロールを取得する良い方法はありますか?私はVisualTreeHelperを使用して視覚ツリーを歩くだけでなく、それらのどれも非常にエレガントではなく、関心のコントロールにLoadedイベントを渡すテクニックを使用しました。 DataTemplateコントロールにアクセスするにはどうすればよいですか?DataTemplateからコントロールにプログラムでアクセスする
ConverterParameterが設計時にわからないバインディングを追加する必要があり、ConverterParametersへのバインディングがサポートされていないため、コードでバインディングを作成する必要があります。理想的には、私はこれをDataTemplate内のコントロールのLoadedイベントハンドラ以外のどこかで実行できるようにしたいと考えています。
実際、このシナリオでは、イベントの処理はまったく機能せず、OutOfMemoryExceptionが発生します。ここに私の試みです:
generic.xaml:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SilverlightTest">
<Style TargetType="local:TemplatedControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:TemplatedControl">
<ListBox ItemsSource="{TemplateBinding ListBoxItemsSource}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock x:Name="SomeTextBlock"
Loaded="SomeTextBlock_Loaded"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
templatedcontrol.cs:
public class TemplatedControl : Control
{
public object ListBoxItemsSource
{
get { return (object)GetValue(ListBoxItemsSourceProperty); }
set { SetValue(ListBoxItemsSourceProperty, value); }
}
public static readonly DependencyProperty ListBoxItemsSourceProperty =
DependencyProperty.Register
("ListBoxItemsSource", typeof(object),
typeof(TemplatedControl), new PropertyMetadata(null));
public TemplatedControl()
{
this.DefaultStyleKey = typeof(TemplatedControl);
}
public void SomeTextBlock_Loaded(object sender, RoutedEventArgs ea)
{
}
}
これを少し拡張して、これが役に立つシナリオを含めることができますか? –
質問に追加... –