ItemsWrapGrid 不适用于自定义 UserControl x:bind 未绑定控件属性

问题描述 投票:0回答:1

在 WinUI3 项目中,下面的 XAML

GridView
代码工作得很好。生成
UserHomeView
中的 UI,并触发和更新依赖于
UserHomeViewModel
的所有属性和流程。但是,一旦我将
StackPanel
替换为
ItemsWrapGrid
以将项目排列在网格中,它就会停止工作,我仍然可以看到每个项目的 UserHomeView 的 UI,但 UserHomeViewModel 是
null
以及每个项目的渲染 UI项目根本无法使用。

-工作正常。

<GridView ItemsSource="{x:Bind WindowConfiguratorViewModel.KioskCollection, Mode=OneWay}">
<GridView.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel /> <!--Working!-->
    </ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
    <DataTemplate x:DataType="viewModelsConfigurator:ProfileKioskDesktopViewModel">
        <userHomeViews:UserHomeView UserHomeViewModel="{x:Bind UserHomeViewModel}" />
    </DataTemplate>
</GridView.ItemTemplate>
</GridView>

-不起作用。

<GridView ItemsSource="{x:Bind WindowConfiguratorViewModel.KioskCollection, Mode=OneWay}">
<GridView.ItemsPanel>
    <ItemsPanelTemplate>
        <ItemsWrapGrid /><!--Not Working!-->
    </ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
    <DataTemplate x:DataType="viewModelsConfigurator:ProfileKioskDesktopViewModel">
        <userHomeViews:UserHomeView UserHomeViewModel="{x:Bind UserHomeViewModel}" />
    </DataTemplate>
</GridView.ItemTemplate>
</GridView>

我用用户控件中的其他自定义视图进行了测试,结果是相同的。我既没有得到编译错误,也没有得到运行时错误,使用

UserHomeViewModel
时,
ItemsWrapGrid
根本没有绑定。

有人知道为什么会发生这种情况吗?

c# xaml winui-3 windows-app-sdk
1个回答
1
投票

确保您的用户控件中的 DependencyProperty

public static read-only
属性。

public int SomeValue
{
    get => (int)GetValue(SomeValueProperty);
    set => SetValue(SomeValueProperty, value);
}

// My first guess is that `static` is missing.
public /*static*/ readonly DependencyProperty SomeValueProperty =
    DependencyProperty.Register(
        nameof(SomeValue),
        typeof(int),
        typeof(UserControl1),
        new PropertyMetadata(default));
© www.soinside.com 2019 - 2024. All rights reserved.