以下代碼工作正常。代碼中的其他地方出現錯誤。不過,給出的建議很好。WPF綁定IValueConverter和另一個控件的寬度
我想的Width
一個TextBox
綁定到父控件的Width
的百分比。我知道我可以通過設置Margin
來完成類似的事情,但我想知道爲什麼這樣做不起作用。
首先,我將在我的用戶控制的資源集合到一個IValueConverter
參考:
<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屬性在這裏什麼也不做,讓alon e設置IValueConverter
。我希望ScrollViewer
是父母StackPanel
的寬度的1/4。
我試着用靜態設置`寬度`你的XAML,它工作正常。 – SLaks 2011-01-23 23:30:44
同樣,在VS2008中試過了,`ScrollViewer`是`ParentPanel`大小的四分之一 - 如果你在`TextBox`周圍刪除`StackPanel`,`TextBox`將會擴展到` ScrollViewer`? – 2012-06-08 14:56:11