以下代码在编译时工作正常,但我无法在设计器中使用 Text =“{x:Static local:SomeClass + Limits.Name}”。在这方面的任何帮助将不胜感激!感谢....
namespace StaticTest
{
public class SomeClass
{
public static class Limits
{
public const string Name = "It Works!";
}
}
}
<Window
x:Class="StaticTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:StaticTest"
Title="StaticTest"
Height="146"
Width="296"
WindowStartupLocation="CenterScreen">
<TextBlock
Grid.Column="1"
Grid.Row="1"
Text="{x:Static local:SomeClass+Limits.Name}" />
</Window>
答案 0 :(得分:0)
你需要绑定为@ H.B.表示:
<TextBlock Text="{Binding Source={x:Static local:SomeClass+Limits.Name}}"/>
VS2010设计师无法解决这个问题,但它在VS11测试版中运行良好。
答案 1 :(得分:0)
我明白了。事实证明,您需要执行以下操作:
using System;
namespace StaticTest
{
public abstract class AbstractViewModel<VM, LC>
where VM : new()
where LC : new()
{
public AbstractViewModel()
{
Limits = new LC();
}
static AbstractViewModel()
{
Instance = new VM();
}
public LC Limits { get; private set; }
public static VM Instance { get; private set; }
}
public class MainWindowViewModel :
AbstractViewModel<MainWindowViewModel, MainWindowViewModel.LimitsClass>
{
public class LimitsClass
{
public LimitsClass()
{
Lots = new MinMax<int>(1, 10);
}
public MinMax<int> Lots { get; private set; }
}
}
}
<Window
x:Class="StaticTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:StaticTest"
Title="StaticTest"
Height="146"
Width="296"
WindowStartupLocation="CenterScreen">
<Grid>
<TextBlock
Text="{Binding Source={x:Static local:MainWindowViewModel.Instance}, Path=Limits.Lots.MaxValue}" />
</Grid>
</Window>