Tag: silverlight

Listpicker错误SelectedItem必须始终设置为有效值

我在Windows Phone 7应用程序中有一个页面,用户可以在其中编辑或删除Transaction对象。 Transaction对象是一个Linq-to-Sql类,它与Account类和Category类有关系。 在页面中,我使用ListPicker让用户选择给定事务的帐户和类别,如下所示: ListPicker_Tap事件是针对Windows Phone的WPF Toolkit的Aug / 2011版本中的错误的修复,简单地说: private void ListPicker_Tap(object sender, System.Windows.Input.GestureEventArgs e) { ListPicker lp = (ListPicker)sender; lp.Open(); } 如果用户编辑事务,一切都很好,但如果用户尝试删除它,我会收到一条错误消息,说“SelectedItem必须始终设置为有效值”。 如果用户单击TransactionPage.xaml.cs中appbar中的delete按钮,则代码如下: private void appBarDelete_Click(object sender, EventArgs e) { MessageBoxResult result = MessageBox.Show(“Are you sure?\n”, “Confirm”, MessageBoxButton.OKCancel); if (result == MessageBoxResult.OK) { App.ViewModel.DeleteTransaction(transaction); } NavigationService.GoBack(); } 我的ViewModel.DeleteTransaction方法: public void DeleteTransaction(Transaction transaction) { […]

ContextMenu点击而不是点击并按住

我需要打开一个菜单,因为WP7 not designed执行这些操作not designed ,所以我正在使用Toolkit。 以下是示例代码: 现在只要用户按下并保持动作,这就可以正常工作。 但我不能要求用户采取这样的行动。 我需要在单击/点击/触摸/手势(您要调用它的水)上显示菜单。 有人可以建议吗? 如果您认为工具包不是最佳方式,那么请使用示例代码建议替代方案。 我试过弹出窗口,但这比我的应用程序更糟糕

AsyncCallBack异步完成

我最近注意到了以下模式,但我并没有完全掌握CompletedSynchronously属性的用法: IAsyncResult channelOpenResult = channel.BeginOpen(new AsyncCallback(OnOpenCompleteChannel), channel); if (channelOpenResult.CompletedSynchronously) { CompleteOpenChannel(channelOpenResult); } 然后再次回调: void OnOpenCompleteChannel(IAsyncResult result) { if (result.CompletedSynchronously) return; else CompleteOpenChannel(result); } 代码中的某个地方当然有一个function: void CompleteOpenChannel(IAsyncResult result) … 这是一种处理异步调用的方式,具体取决于它是否直接完成? 但是为什么在这种情况下使用它,因为始终会调用AsyncCallback(它会吗?)? 有人可以给出一个同步调用的例子吗?

转换后获取元素位置

我有一个UIElement,它上面进行了各种转换(缩放和翻译)。 有没有办法在转型后获得UIElement的位置? 我尝试了GetValue(Canvas.TopProperty)但它没有改变它的加载方式。 我必须遗漏一些明显但不确定的东西。 (我正在使用silverlight)

强制浏览器在更新后重新加载Silverlight xap

我将Silverlight控件打包并部署到SharePoint Web部件。 我推送更新后,浏览器加载新版本的控件时遇到问题。 我正在更新我的xap项目的程序集和文件版本,但似乎并不重要。 让浏览器加载新xap的唯一方法是进入并删除临时Internet文件。 对我来说,在开发过程中,没关系,但我需要在生产之前找到解决方案。 有任何想法吗?

你可以在C#中迭代它时从List 中删除一个项目吗?

您可以在迭代它时从列表中删除项目吗? 这会有用,还是有更好的方法呢? 我的代码: foreach (var bullet in bullets) { if (bullet.Offscreen()) { bullets.Remove(bullet); } } -edit-对不起,伙计们,这是一个silverlight的游戏。 我没有意识到Silverlight与Compact Framework不同。

如何从另一个类或窗口访问WPF中的控件

我想在WPF中的mainWindow中访问我的控件,如按钮或文本框,但我不能这样做。 在Windows窗体应用程序中它很容易,您可以将该控件的修饰符设置为True,并且您可以从该mainWindow的实例到达该控件,但在WPF中,我无法声明公共控件。 我怎样才能做到这一点?

到达最后一项时WP7 Auto Grow ListBox

我正在尝试实现一种效果,当用户向下滚动到最后一项时,会有更多项目附加到列表中。 我还没有找到一种方法来确定用户是否已滚动到列表的末尾。 我没有在ListBox上看到当用户到达列表底部时触发的事件。 告诉我什么时候一个项目滚动到视图中的东西会很棒,但据我所知,没有类似的东西。 这在WP7中甚至可能吗? 编辑:另一种说法是,我们可以检测到列表何时“退回”?

如何在控件外部单击时关闭Silverlight中的弹出窗口?

在我的Silverlight UI中,我有一个按钮,当单击时会弹出一个带有一些过滤参数的控件。 当你在它外面点击时,我希望这个控件隐藏起来。 换句话说,它应该以类似于combobox的方式运行,但它不是combobox(您不选择其中的项目)。 这是我试图捕获控件外部的点击以解除它的方式: public partial class MyPanel : UserControl { public MyPanel() { InitializeComponent(); } private void FilterButton_Click(object sender, RoutedEventArgs e) { // Toggle the open state of the filter popup FilterPopup.IsOpen = !FilterPopup.IsOpen; } private void UserControl_Loaded(object sender, RoutedEventArgs e) { // Capture all clicks and close the popup App.Current.RootVisual.MouseLeftButtonDown += delegate […]

MVVM:修改模型,如何正确更新ViewModel和View?

案件 假设我有一个Person类,一个PersonViewModel和一个PersonView 。 将PersonView中的属性更新为Person模型非常简单。 PersonViewModel包含一个Person对象,并具有PersonView绑定的公共属性,以便更新Person模型。 然而。 想象一下, Person模型可以通过Service更新。 现在需要将属性更改传递给PersonViewModel ,然后传递给PersonView 。 我就是这样解决的: 对于Person模型中的每个属性,我都会引发PropertyChanged事件。 PersonViewModel订阅Person的PropertyChanged事件。 然后PersonViewModel将引发另一个PropertyChanged以更新PersonView 。 这对我来说似乎是最明显的方式,但我有点想把这个问题抛到那里,希望有人能给我一个更好的方法。 这真的很简单,还是有更好的方法将模型标记为已修改并更新ViewModel上的相应属性? 附加 PersonView的DataContext是PersonViewModel 。 Person从JSON填充并在其生命周期内多次更新。 随意为我的特定情况建议架构更改。 回答 我将aqwert标记为我问题的答案,因为它为我提供了我已经提出的解决方案的替代方案。