我有以下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
上不可用。有人能帮忙吗?
1条答案
按热度按时间xwmevbvl1#
根据UWP UserControl文档,您需要定义根元素的背景颜色。
请注意,UserControl不在其控件模板中显示其属性的值。而是在UserControl内设置根元素的Background。有关详细信息,请参阅Control.Background.