簡體   English   中英

IValueConverter計算TextBlock的新大小

[英]IValueConverter calculate new size for TextBlock

我正在嘗試使用IValueConverter來計算TextBlock的新寬度,具體取決於網格上的寬度。 但是我總是會遇到這樣的異常:

PresentationFramework.dll中發生了類型為'System.Windows.Markup.XamlParseException'的未處理異常。其他信息:'在'System.Windows.Markup.StaticResourceHolder'上提供值引發了異常。 行號“ 264”和行位置“ 76”。

我將CalMeetingSize縮減為所有內容,但仍然收到錯誤。 所以我認為我在xml中做錯了什么? 有人可以給我提示嗎?

<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之前聲明了Window.Resources,以便知道它。 添加資源后,在使用它之前也應一次構建您的應用程序,這有時會幫助解決構建錯誤

您也不能綁定到元素的Width ,而必須綁定到ActualWidth 寬度已初始化為NaN ,在這里無法使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM