以下代码工作正常。代码的其他地方有错误。不过,给出的建议还是不错的。
我正在尝试将Width
a绑定到父控件TextBox
的百分比。Width
我知道我可以通过简单地设置 a 来完成类似的事情Margin
,但我想知道为什么这不起作用。
首先,我IValueConverter
在用户控件的资源集合中设置了对 an 的引用:
<UserControl.Resources>
<local:TextBoxWidthConverter x:Key="txtWidthConv" />
</UserControl.Resources>
在主要的 xaml 中,我有以下内容:
<StackPanel Name="parentPanel" Width="300">
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Hidden" Name="scroller" Width="{Binding Width,
ElementName=parentPanel, Converter={StaticResource txtWidthConv}}">
<StackPanel Orientation="Horizontal">
<TextBox></TextBox>
</StackPanel>
</ScrollViewer>
</StackPanel>
ivalueconverter 如下所示:
public class TextBoxWidthConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double result = (double)value;
if (!Double.IsNaN(result))
{
result = result * .25;
}
else
{
result = 100D;
}
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new System.NotImplementedException("Not implemented.");
}
#endregion
}
设置 width 属性在这里没有任何作用,更不用说设置IValueConverter
. 我希望ScrollViewer
是 parent 宽度的 1/4 StackPanel
。