日期:2014-05-18  浏览次数:22021 次

WPF TextBlock自动调整宽度
假设有XAML布局:
C# code

    <WrapPanel x:Name="mainWrapPanel">
    </WrapPanel>


C#代码部分:
C# code

TextBlock txt;
private void AddTextBlock()
{
    txt = new TextBlock();
    txt.Backgroud = new SolidColorBrush(Colors.LightBlue);
    this.mainWrapPanel.Children.Add(txt);
}
private void ShortText()
{
    txt.Text = "abc";
}
private void LongText()
{
    txt.Text = "123456767888768765";
}
private void SetWidth()
{
    txt.Width = 100;
}


调用代码:
C# code

AddTextBlock(); // textblock被加载到界面
ShortText(); // textblock内容显示为"abc",textblock的宽度自动调整到"abc"显示宽度
LongText(); // textblock内容显示为"123456767888768765",textblock的宽度自动调整到"123456767888768765"显示宽度
SetWidth(); // textblock宽度调整为100, 之后无论运行ShortText()或LongText()其宽度都不变了
; // AutoWidth() 这里我想用一个方法使textblock(也就是txt)回到之前那样随其Text长度变化而变化的状态,应该怎么做?



请问在调用上面SetWidth()方法之后,如何再实现没有调用之前的那样可以随textblock的Text包含字符长度变化而变化?
需要设置什么属性或方法?(也就是如何实现上面的AutoWidth()方法?)
多谢指教.

------解决方案--------------------
直接设置为 Double.NaN

http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k(SYSTEM.WINDOWS.FRAMEWORKELEMENT.WIDTH);k(WIDTH);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&rd=true