以编程方式修改自定义UserControl
本文关键字:自定义 UserControl 修改 方式 编程 | 更新日期: 2023-09-27 17:53:12
我让这个用户控制:
<UserControl
x:Class="ScannerApp.Custom_Controls.LocationAndQuantity"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ScannerApp.Custom_Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="20">
<Grid Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border x:Name="border" Background="{Binding Color}">
<TextBlock x:Name="locationTxt" Text="{Binding Location}" HorizontalAlignment="Center"></TextBlock>
</Border>
<TextBlock x:Name="quantityTxt" Text="{Binding Quantity}" Grid.Column="1" HorizontalAlignment="Center" TextWrapping="Wrap" VerticalAlignment="Top"/>
</Grid>
</UserControl>
我需要能够修改边框背景颜色和TextBlocks中的文本。但是,如果我创建了一个新的自定义控件,我将无法设置它。
我试过了:
LocationAndQuantity customControl = new LocationAndQuantity(Color = "red", Location = "A-01-01", Quantity = "23");
或:
LocationAndQuantity customControl = new LocationAndQuantity();
customContrl.border = ... //this just gives me error right away.
您可以通过以下方式定义属性来绑定用户控件
public partial class LocationAndQuantity : UserControl
{
public Brush Color { get; set; }
public string Location { get; set; }
public int Quantity { get; set; }
//The class must have default constructor
public LocationAndQuantity()
{
this.InitializeComponent();
}
public LocationAndQuantity(string c,string l, int q)
{
this.Color = new SolidColorBrush((Color)ColorConverter.ConvertFromString(c));
this.Location = l;
this.Quantity = q;
InitializeComponent();
DataContext = this;
}
}
使用:
LocationAndQuantity customControl = new LocationAndQuantity("red", "A-01-01", 10);
//then add to stackpannel for example
stackPanel.Children.Add(customControl);