小编Fil*_*kun的帖子

为什么FlipView会忽略SelectedItem

我想使用FlipView显示一些项目并开始显示特定项目.

为此,我定义了一个视图模型类:

class MyDataContext
{

    public MyDataContext()
    {
        Items = new List<MyClass>();
        Items.Add(new MyClass("1"));
        Items.Add(new MyClass("2"));
        Items.Add(new MyClass("3"));
        SelectedItem = Items[1];
    }

    public List<MyClass> Items { get; set; }
    public MyClass SelectedItem { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,所选项目不是第一项.

现在为XAML:

    <FlipView ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}"></FlipView>
Run Code Online (Sandbox Code Playgroud)

但是,当我运行应用程序时,翻转视图显示第一个项目,而不是第二个项目.

这是故意的吗?还是一个错误?

xaml windows-runtime winrt-xaml

5
推荐指数
2
解决办法
4582
查看次数

WinRT自定义控件依赖项属性设置/绑定

我正在尝试为WinRT/Metro应用程序开发自定义控件.

它有一个依赖属性,我希望能够在自定义控件中设置它的值.但是,使用SetValue会中断控件的使用者可能创建的任何绑定.

我找到的解决方案(例如SetCurrentValue)似乎都不适用于WinRT/Metro.这个问题有方法解决吗?

这听起来很简单 - 老实说! - 我试图在这里和其他地方找到解决方案.任何帮助将不胜感激.

binding dependency-properties custom-controls windows-runtime winrt-xaml

5
推荐指数
1
解决办法
3339
查看次数

适用于XAML的Windows Metro中的DrawingBrush

我正在用C#编写基于Windows Metro XAML的应用程序,我想在我的自定义网格控件上用画笔绘制网格线.

在WPF中,我会创建一个DrawingBrush来完成这项工作,但似乎在Metro中没有相应的???

有没有人知道这个功能是否存在于另一个名称下,或者您是否以不同方式获得相同的结果?

作为一个额外的注释,我不想直接在我的网格上绘制线条等(在我的面板的子集合中添加线条),它确实需要通过背景属性 - 即刷子来完成.

谢谢

wpf xaml windows-runtime winrt-xaml

5
推荐指数
1
解决办法
1487
查看次数

Windows 8 Metro:实施验证

我只是用Google搜索了大约2个小时,但没有找到任何东西.

鉴于以下情况:

public class Person
{
    [Required]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

XAML:

<TextBox Text="{Binding Name, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)

您将如何在MVC3中自动获取UI上的验证反馈?

(哦,如果我能够使用像[必需]那样的集成数据注释,我现在真的不在乎)

任何帮助深表感谢!

validation xaml windows-8 windows-runtime winrt-xaml

5
推荐指数
1
解决办法
7324
查看次数

更新Windows 8 C#Metro App的GUI

我使用C#中的Visual Studio 11 Ultimate为Win 8创建了一个基本的Metro App.

这里的问题是我想显示随某些事件动态变化的文本.一个例子是一个应用程序,其中一个数字显示在屏幕上,并且只要点击鼠标就增加1.

我已经使用XAML绑定到我创建的数据结构,它确实获得了我需要显示的值,但问题是当这些值发生变化时,GUI上显示的数字不会改变.

如何将我的XAML绑定到动态更改的数据,以便GUI上的XAML显示也发生变化?

谢谢您的帮助!

- 编辑 -

我已经实现了INotifyPropertyChanged接口,但现在我从这行代码中收到一个异常:

PropertyChanged(this,new PropertyChangedEventArgs(propertyName));

这是异常信息:

该应用程序调用了一个为不同线程编组的接口.(来自HRESULT的异常:0x8001010E(RPC_E_WRONG_THREAD))

c# xaml windows-8 windows-runtime winrt-xaml

5
推荐指数
1
解决办法
4072
查看次数

禁用列表视图的交叉幻灯片选择

我正在设计一个在中心具有垂直平移的一维列表的应用程序,并且由于翻转视图,用户能够在列表之间水平翻转.

垂直平移的一维列表

当用户在列表视图中水平拖动时,它会因交叉滑动而选择该行.这不是我想要的行为.我希望flipview能够开始左右平移.我认为这与rails有关,因为当用户对角平移时,他们可以平移flipview.

当selectionmode设置为时,甚至会发生交叉幻灯片 None

如何禁用交叉幻灯片,或者如何确保当用户向左和向右平移flipview平移而不是listview项目时?

listview gesture windows-8 windows-runtime winrt-xaml

5
推荐指数
1
解决办法
4608
查看次数

列表视图选择显示,没有填充,也没有选中标记

我有这个在代码中XAML显示一个.在将被用作一个选择菜单.ListViewC++/CXListView

<ListView x:Name="itemsListView"
 ItemsSource="{Binding Source={StaticResource MenuDataSourceCVS}}"
 HorizontalAlignment="Stretch"
 Width="230"
 Margin="0,45,0,0"
 VerticalAlignment="Top"
 Grid.Row="1"
 SelectionChanged="itemsListView_SelectionChanged" SelectionMode="Single"
 HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
 FontFamily="Global User Interface">
 <ListView.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal" Height="40" Width="230">
            <TextBlock Text="{Binding Name}"
                Margin="10,5" Width="150" Height="30"
                HorizontalAlignment="Stretch"
                VerticalAlignment="Stretch"/>
            <Border Height="30" Width="30" Margin="5">
                <Image Source="{Binding ImageSrc}" Stretch="Fill"/>
            </Border>
        </StackPanel>
    </DataTemplate>
 </ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)

如下图所示,选择不会占据所有列,并在选中时显示复选标记.

带有复选标记和填充的ListView选择

有没有办法消除这种填充和复选标记?

listview windows-8 windows-runtime c++-cx winrt-xaml

5
推荐指数
1
解决办法
4730
查看次数

WinRT XAML工具包可视化错误

我有一个页面,我想使用WinRT Xaml Toolkit数据可视化控件放置图表.

我有以下代码:

   <Charting:Chart x:Name="PieChart" Width="400" Height="400">
        <Charting:Chart.Series>
            <Charting:PieSeries IndependentValuePath="X" DependentValuePath="Y"/>
        </Charting:Chart.Series>
    </Charting:Chart>
Run Code Online (Sandbox Code Playgroud)

VS告诉我,PieSeries错了:"'PieSeries'类型的值不能添加到'Collection`1''类型的集合或字典中.

为什么这是一个错误?

c# xaml windows-runtime winrt-xaml-toolkit

5
推荐指数
1
解决办法
1232
查看次数

具有相同xaml文件和不同DataContexts的多个输入表单

我正在使用XAML和MVVM Light开发WinRT应用程序.这个应用程序旨在使用户在外地时更容易进行数据收集.我有一个应用程序的部分,用户需要输入一些有关几个不同项目的信息.这些项定义为从GenericAsset类继承的类.在GenericAsset具有诸如这样的:

public class GenericAsset
{
    public string AssetId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Make { get; set; }
    public string Model { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

子类看起来像这样:

public class SubAsset1 : GenericAsset
{
    public string RecordNumber { get; set; }
    public int SizeDiameter { get; set; }
    public string MaterialType { get; set; }
}

public class SubAsset2 : GenericAsset …
Run Code Online (Sandbox Code Playgroud)

c# xaml mvvm-light windows-runtime winrt-xaml

5
推荐指数
1
解决办法
272
查看次数

用于立即返回内容的异步方法的模式

如果我写一个简单的函数,我可以立即得到一个结果.如果我使用async/await并返回一个Task- 该方法将在完成任务后返回,但是如果我需要编写一个需要立即返回的方法,然后继续更新结果并可能最终完成任务呢?另外,如果我想在WinRT组件库之外公开它以供其他语言的组件使用,该怎么办?我如何在C#中完成它,我将如何在C++/CX中完成?或JS或许?

例1:

我想公开一个返回一个的属性,ImageSource所以我可以立即将它从我的MVVM视图模型绑定到XAML视图.加载方法ImageSource将在一个单独的类中,该类在WinRT组件外部公开(它是一个公共方法).现在我希望该方法是可以等待的,或者至少以某种方式返回我可以等待的任务但也立即返回ImageSource所以我调用它的属性可以立即返回,因为属性不能是异步的.调用者不知道ImageSource将是什么类型,因此它无法实例化它,因为ImageSource它实际上是一个抽象类型,通常表示为BitmapImageWriteableBitmap在我的情况下,两者都可以从方法返回.显然,该方法本身立即知道它是否将返回任何类型的对象,但是它需要一些时间来读取/创建和/或解码图像.

我在想C#中的签名可能是这样的

public async Task<ImageSource> GetImage(
    object key,
    out ImageSource bitmap,
    CancellationToken cancellationToken)
Run Code Online (Sandbox Code Playgroud)

我只是不等待属性访问器中的方法的结果,但我想我能够立即返回位图参数,而当我在其他地方调用或在我的视图模型的代码中的其他地方事件时我会能够等待或取消任务.

例2:

我希望能够列出磁盘中的文件,并在列出所有文件后获得完成的任务,但会立即返回一个IObservableVector视图模型,表示在我的XAML UI中使用的文件,这些文件更新为文件页面异步加载.

在这里,我可能会做类似的事情:

public async Task<int> GetImages(
    object queryParemeters,
    out ObservableCollection<CustomFileInfoType> files,
    CancellationToken cancellationToken)
Run Code Online (Sandbox Code Playgroud)

问题

现在上面看起来几乎不错,但是我认为我不能在WinRT组件之外暴露一个TPL任务,因为Task它不是WinRT类型,所以我可能给出了一个类似上面的内部方法和一个包含结果的公共方法作为IAsyncOperation通过调用AsyncInfo.Run(),传递任务和取消标记.ObservableCollection也只是.NET,所以我可能需要在它周围创建一个包装器来实现,IObservableVector因为我不认为它在.NET中可用.这些可能存在其他潜在问题,我不确定这种设计是否正确.

那么 - 我将如何在C++/CX中完成所有这些工作?还是JS?

c# async-await windows-runtime c++-cx winrt-component

4
推荐指数
1
解决办法
759
查看次数