gpt4 book ai didi

c# - 为什么 TextBlock 可以显示代码隐藏属性值但边框/填充不能使用它?

转载 作者:行者123 更新时间:2023-11-30 22:47:39 25 4
gpt4 key购买 nike

在下面的 Silverlight 应用程序中,为什么 OuterPadding 属性不更改外边框中的填充,尽管 TextBlock 正确显示了 OuterPadding 的值?如果我将边框填充更改为一个简单的整数,它填充工作正常,但当它由代码后面的属性定义时就不行了。

同样的代码在 WPF 中运行良好。

XAML:

<UserControl x:Class="Test222.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:pages="clr-namespace:Test222.Pages"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Width="600" Height="480">
<Border Background="#eee" Padding="{Binding OuterPadding}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="34"/>
<RowDefinition Height="426"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0">
<StackPanel x:Name="QuickMenu" Orientation="Horizontal"/>
</StackPanel>
<Border Grid.Row="1" Grid.Column="0"
Background="#fff"
Padding="10"
Width="580"
Height="426"
VerticalAlignment="Top"
CornerRadius="5">
<TextBlock Text="{Binding OuterPadding}"/>
</Border>
</Grid>
</Border>
</UserControl>

代码隐藏:

using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;

namespace Test222
{
public partial class MainPage : UserControl, INotifyPropertyChanged
{

#region ViewModelProperty: OuterPadding
private int _outerPadding;
public int OuterPadding
{
get
{
return _outerPadding;
}

set
{
_outerPadding = value;
OnPropertyChanged("OuterPadding");
}
}
#endregion

public MainPage()
{
InitializeComponent();
DataContext = this;

RefreshApplication();
}

void RefreshApplication()
{
OuterPadding = 5;


for (int i = 0; i < 5; i++)
{
var button = new Button();
button.Content = "Button " + i;
button.Margin = new Thickness { Right = 3 };
QuickMenu.Children.Add(button);
}
}


#region INotifyPropertyChanged Member

public event PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;

if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}

#endregion

}
}

最佳答案

在 xaml 中定义值时,int 有效,但在代码中定义值时却无效。但是,如果您将属性从 int 更改为 ThickNess,它就可以正常工作。

关于c# - 为什么 TextBlock 可以显示代码隐藏属性值但边框/填充不能使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2152686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com