MyObject
の場合はDataTemplate
を作成しています。 MyObject
は、例えば、StackPanel
、すなわちpublic StackPanel MyStackPanel
を含む。私はMyStackPanel
をMyObjectのDataTemplateにどのように挿入できますか?UserControlを挿入するDataTemplate
0
A
答えて
1
これは行うことができますが、私はあなたがしたい理由は分かりません。
この例では、オブジェクトタイプとして "Customer"を使用し、その中にボタンを含みます(ただし、StackPanelと同じように簡単に使用できます)。
public class Customer : DependencyObject
{
public Customer()
{
MyButton = new Button();
MyButton.Content = "I'm a button!";
}
#region MyButton
public Button MyButton
{
get { return (Button)GetValue(MyButtonProperty); }
set { SetValue(MyButtonProperty, value); }
}
public static readonly DependencyProperty MyButtonProperty =
DependencyProperty.Register("MyButton", typeof(Button), typeof(Customer));
#endregion
}
オブジェクトをDependencyObjectにすることなく、ネストされたコントロールを依存プロパティとして定義しないと、これを行うことはできません。 INotifyPropertyChangedを実装すると、代わりに(オブジェクトがDependencyObjectから継承できない場合)動作する可能性がありますが、それをテストしていません。
テンプレートを使用してメインウィンドウ:
<Window x:Class="TemplateTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TemplateTest"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type local:Customer}">
<ContentPresenter Content="{Binding MyButton}" />
</DataTemplate>
</Window.Resources>
<Grid>
<ItemsControl x:Name="CustomersList" />
</Grid>
</Window>
あなたが見ることができるように、私は、被写体からのボタンをバインドするためのContentPresenterを使用しています。
あなたは、このでそれをテストすることができます。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Loaded += (s, e) =>
{
var myCustomer1 = new Customer();
var myCustomer2 = new Customer();
var customers = new ObservableCollection<Customer>();
customers.Add(myCustomer1);
customers.Add(myCustomer2);
CustomersList.ItemsSource = customers;
};
}
}
0
このようなことはできません。テンプレートは実行されたビルドプランであり、特定のインスタンスや特定のインスタンスへの参照を含んでいません。
関連する問題
- 1. XML DataTemplate Binding MultiLayer UserControl
- 2. ListControllerのDataTemplateをUserControlに追加する
- 3. UserControlでのDataTemplateのバインド
- 4. FlowLayoutPanelにUsercontrolを挿入します
- 5. DataTemplate内のUserControlのプロパティへのバインド
- 6. ListBox内のDataTemplateとしてUserControl
- 7. datatemplateと "メイン"グリッドのusercontrolの違い
- 8. WPFバインドGridViewColumn.CellTemplateのDataTemplate内のUserControlプロパティ
- 9. UWPはListViewの項目をUserControl DataTemplateとしてバインドします
- 10. DataTemplateのdatacontextプロパティをusercontrol依存関係プロパティにバインド
- 11. WPTのUserControlでDataTemplateのコントロールを表示/非表示
- 12. UWP DataContextからDataTemplateのUserControlへのUWP DataContext
- 13. ListViewでUserControlをDataTemplate(いくつかのバインディング付き)として使用
- 14. 挿入中に列を挿入する
- 15. mysqlテーブルの挿入を挿入する
- 16. リストボックス内にあるDataTemplate内のチェックコンボボックスDataTemplate
- 17. 挿入をスピードアップする - 一度にリストを挿入する
- 18. クエリを挿入するクエリを挿入する
- 19. asp.netでAccordion内にUserControlを挿入するにはどうすればよいですか?
- 20. DataTemplateを再利用する
- 21. PGSQLに挿入するIDをBに挿入する
- 22. マクロを挿入して行を挿入する
- 23. MVVM + UserControl + UserControl + DependencyProperty
- 24. ストアドプロシージャの挿入挿入
- 25. 挿入するスクリプトブロック
- 26. WPFはDataTemplateを
- 27. ネットワークエラーが発生し、dblink-tableに挿入するトリガーを挿入すると、挿入が遅れる
- 28. SQL Server挿入トリガを複数回挿入する
- 29. SQL Serverの - を挿入するために挿入/後 - ロールバック
- 30. データベースに挿入されていないクエリを挿入する
うーん、DataTemplatesが通常使用するコントロールの消費者のために意図されています。デフォルトのテンプレートを作成しようとしていますか? –