0

我正在阅读 Metro Revealed:使用 XAML 和 C# 构建 Windows 8 应用程序。这本书包含我无法编译的这段代码:

using Windows.UI.Xaml;

...

private void HandleViewStateChange(ApplicationViewState viewState) {
    if (viewState == ApplicationViewState.Snapped) {
        GridLayout.ColumnDefinitions[0].Width
            = GridLengthHelper.FromPixels(0);
    } else {
        GridLayout.ColumnDefinitions[0].Width
            = GridLengthHelper.FromValueAndType(1, GridUnitType.Star);
    }
}

问题在于GridLengthHelperVisual Studio 不可见的类(在 VS 2012 Express for Windows 8 RC 和 VS 2012 Ultimate RC 中都试过)。构建错误是:

当前上下文中不存在名称“GridLengthHelper”

或者

“Windows.UI.Xaml.GridLengthHelper”因其保护级别而无法访问

对象浏览器没有根据文档显示此类Windows.winmd应该在的位置。当我导航到对象浏览器中显示的路径时,更令人沮丧的是:

C:\Program Files (x86)\Windows Kits\8.0\References\CommonConfiguration\Neutral\Windows.winmd

并在 Reflector 中打开Windows.winmd文件,我看到 publicGridLengthHelper类存在!

4

1 回答 1

1

您可以只使用 new GridLength(pixels) 或 new GridLength(starWidth, GridUnitType.Star)

于 2012-07-23T08:43:00.700 回答