私は gridView を持っており、ObservableCollection のさまざまなクラス項目をハブ ページにバインドしています。さまざまなクラス アイテムを gridView にバインドし、さまざまなアイテムのデータ テンプレート、ヘッダー テンプレートを表示します。
グリッドビューのヘッダー テンプレートでユーザー コントロールを使用しています。ユーザーコントロールとユーザーコントロールを含む私のヘッダーテンプレートには、いくつかのコンボボックスが含まれています。pageRoot オブジェクトのパラメーターを介して、pageRoot datacontext コレクションを headertemplate コンボボックスにバインドします。
ユーザー コントロールを作成し、いくつかの DependencyProperty、コンボボックス イベント ハンドラを作成しています。しかし、pageRoot DataContext コレクションをユーザー コントロール コンボボックスにバインドすることはできません :(
私の英語は下手です、このような状況で申し訳ありません;) 回答ありがとうございます..
私のヘッダーデータテンプレート:
<DataTemplate x:Key="OrganizationFixtureHeaderTemplate">
<Grid Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextStyle}"/>
</StackPanel>
<UserControls:UcCbOrganizationFixtureSelections
Grid.Column="1"
RootElement="pageRoot"
PageOrganizationSource="{Binding PageOrganization, ElementName=pageRoot}"
/>
</Grid>
</DataTemplate>
私のユーザー制御コード:
<UserControl
x:Class="Modern_UI.Common.UserControls.UcCbOrganizationFixtureSelections"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Modern_UI.Common.UserControls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<StackPanel Orientation="Horizontal">
<ComboBox x:Name="cbOrgFixtureSeasons"
ItemsSource="{Binding Path=DataContext.Seasons, ElementName=RootElement}"
SelectedValuePath="Id"
DisplayMemberPath="Name"
SelectionChanged="CbOrgFixtureSeasons_OnSelectionChanged"
Width="Auto"
Height="Auto"
/>
<ComboBox x:Name="cbOrgFixtureStages"
ItemsSource="{Binding Path=DataContext.FixtureStages, ElementName=RootElement}"
SelectedValuePath="Id"
DisplayMemberPath="Name"
SelectionChanged="CbOrgFixtureStages_OnSelectionChanged"
Width="Auto"
Height="Auto"
/>
<ComboBox x:Name="cbOrgFixtureRounds"
ItemsSource="{Binding Path=DataContext.FixtureRounds, ElementName=RootElement}"
SelectedValuePath="Id"
DisplayMemberPath="Name"
SelectionChanged="CbOrgFixtureRounds_OnSelectionChanged"
Width="Auto"
Height="Auto"
/>
</StackPanel>
</UserControl>
ユーザー制御の背後にあるコード:
namespace Modern_UI.Common.UserControls
{
public sealed partial class UcCbOrganizationFixtureSelections : UserControl
{
public DependencyProperty RootElementProperty = DependencyProperty.Register("RootElement",
typeof(string),
typeof(
UcCbOrganizationFixtureSelections
),
null);
public DependencyProperty PageOrganizationSourceProperty = DependencyProperty.Register("PageOrganizationSource",
typeof(Organization),
typeof(
UcCbOrganizationFixtureSelections
),
null);
public string RootElement
{
get { return this.GetValue(RootElementProperty) as string; }
set { this.SetValue(RootElementProperty, value); }
}
public Organization PageOrganizationSource
{
get { return this.GetValue(PageOrganizationSourceProperty) as Organization; }
set { this.SetValue(PageOrganizationSourceProperty, value); }
}
public UcCbOrganizationFixtureSelections()
{
this.InitializeComponent();
}
async private void CbOrgFixtureSeasons_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
//loading root page parameter via "PageOrganizationSource" named DependencyProperty.
}
}