IValueConverter 计算 TextBlock 的新大小
IValueConverter calculate new size for TextBlock
我正在尝试使用 IValueConverter 根据 Grid 上的宽度计算 TextBlock 的新宽度。但我总是得到这个例外:
'System.Windows.Markup.XamlParseException' 类型的未处理异常发生在 PresentationFramework.dll
附加信息:“在 'System.Windows.Markup.StaticResourceHolder' 上提供值引发异常。”行号“264”和行位置“76”。
我将 CalMeetingSize 精简到所有内容,但我仍然收到错误。所以我假设我在 xaml 中做错了什么?有人可以给我提示吗?
<Grid x:Name="CalBackGround" Margin="163,30,0,0">
...
<TextBlock Height="18" Text="{Binding subject}"
Width="{Binding Path=Width,
ElementName=CalBackGround,
Converter={StaticResource CalMeetingSizeKey}}"
/>
...
<Window.Resources>
<local:CalMeetingSize x:Key="CalMeetingSizeKey"/>
</Window.Resources>
...
public class CalMeetingSize : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return 200;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
您需要绑定到 CalBackGround 的 ActualWidth
属性,而不是 Width
。
检查您是否在 XAML 中首次使用之前声明了 Window.Resources 以便知道。
在添加资源之后再构建一次应用程序,然后再使用它有时有助于修复构建错误
您也不得绑定到元素的 Width
,但始终绑定到其 ActualWidth
。宽度初始化为 NaN
,此处不起作用。
我正在尝试使用 IValueConverter 根据 Grid 上的宽度计算 TextBlock 的新宽度。但我总是得到这个例外:
'System.Windows.Markup.XamlParseException' 类型的未处理异常发生在 PresentationFramework.dll 附加信息:“在 'System.Windows.Markup.StaticResourceHolder' 上提供值引发异常。”行号“264”和行位置“76”。
我将 CalMeetingSize 精简到所有内容,但我仍然收到错误。所以我假设我在 xaml 中做错了什么?有人可以给我提示吗?
<Grid x:Name="CalBackGround" Margin="163,30,0,0">
...
<TextBlock Height="18" Text="{Binding subject}"
Width="{Binding Path=Width,
ElementName=CalBackGround,
Converter={StaticResource CalMeetingSizeKey}}"
/>
...
<Window.Resources>
<local:CalMeetingSize x:Key="CalMeetingSizeKey"/>
</Window.Resources>
...
public class CalMeetingSize : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return 200;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
您需要绑定到 CalBackGround 的 ActualWidth
属性,而不是 Width
。
检查您是否在 XAML 中首次使用之前声明了 Window.Resources 以便知道。 在添加资源之后再构建一次应用程序,然后再使用它有时有助于修复构建错误
您也不得绑定到元素的 Width
,但始终绑定到其 ActualWidth
。宽度初始化为 NaN
,此处不起作用。