在UserControl级别设置的UWP xaml属性未生效

b5lpy0ml  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(154)

我有以下xaml

<GridView 
    x:Name="gird_view" 
    Grid.Column="1" 
    ItemsSource="{x:Bind workers}"
    ContainerContentChanging="gird_view_ContainerContentChanging">
    <GridView.ItemContainerStyle>
        <Style TargetType="GridViewItem">
            <Setter Property="Margin" Value="10"/>
        </Style>
    </GridView.ItemContainerStyle>
    <GridView.ItemTemplate>
        <DataTemplate x:DataType="models:Worker">
            <local:WorkerControl ViewModel="{x:Bind}"/>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

在另一个xaml文件中:

<UserControl
    x:Class="XBind.View.WorkerControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:XBind.View"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300"
    d:DesignWidth="400"
    Background="BlueViolet">

    <StackPanel Orientation="Vertical" Width="100" BorderBrush="SkyBlue" BorderThickness="1">
        <TextBlock Text="{x:Bind ViewModel.MyName_First,Mode=OneWay}"/>
        <TextBlock Text="{x:Bind ViewModel.MyAge_Years,Mode=OneWay}"/>
        <TextBlock Text="{x:Bind ViewModel.MyWork_Years,Mode=OneWay}"/>
    </StackPanel>
</UserControl>

文件背后的代码:

public sealed partial class WorkerControl : UserControl, System.ComponentModel.INotifyPropertyChanged
{
    public WorkerControl()
    {
        this.InitializeComponent();
    }

    ...
}

每个GridViewItem的背景颜色不是“BlueViolet”。如果我将背景设置为StackPanel,它就会生效。为什么我在UserControl上设置它时不起作用?我尝试这样做的原因是,我可以在UserControl上设置IsEnabled属性,这在StackPanel上不可用。有人能帮忙吗?

xwmevbvl

xwmevbvl1#

根据UWP UserControl文档,您需要定义根元素的背景颜色。
请注意,UserControl不在其控件模板中显示其属性的值。而是在UserControl内设置根元素的Background。有关详细信息,请参阅Control.Background.

相关问题