Tag: xaml

绑定与x:绑定,使用StaticResource作为默认值以及它们在DataContext中的差异

我花了半天时间尝试使用UserControl创建ListView的ItemTemplate ,并通过所述UserControl上的DependencyProperty进行配置。 关于Windows 10 UAP平台上可用的两种不同Binding方法( Binding和x:Bind ),我遇到了一些奇怪的不一致。 UserControl看起来像这样,是自定义日历组件的一部分。 EventItemTemplate是UserControl的DependencyProperty 。 public DataTemplate EventItemTemplate { get { return (DataTemplate)GetValue(EventItemTemplateProperty); } set { SetValue(EventItemTemplateProperty, value); } } public static readonly DependencyProperty EventItemTemplateProperty = DependencyProperty.Register(“EventItemTemplate”, typeof(DataTemplate), typeof(CalendarDayView), new PropertyMetadata(null)); 在其中一个根页面上进行了更改,以便以某种方式设置ListView样式,就像这样。 这实际上是一个工作版本,但我不得不修补它。 我使用x:Bind和Binding进行了第一次尝试,而在RelativePanel上没有DataContext ,因为现在是UserControl 。 x:Bind在根页面EventItemTemplate值设置为EventItemTemplate时, x:Bind将起作用,但是当根页面未指定任何内容时,它将无法使用StaticResource指定的默认DataTemplate 。 另一方面, Binding将始终使用默认的DataTemplate ,即使根页面设置了EventItemTemplate的其他值EventItemTemplate 。 通过将RelativePanel上的DataContext设置为UserControl Binding开始工作就像想要它一样。 x:Bind仍显示相同的行为。 现在我明白Binding默认情况下不会绑定到UserControl的DataContext ,但我仍然不完全确定为什么x:Bind不起作用。 这是预期的行为,还是我的整个计划出现了问题,是我想出的一个幸运的黑客行为?

关于如何在MVVM中使用UpdateSourceTrigger = Explicit的一个很好的例子

我试图弄清楚如何使用UpdateSourceTrigger = Explicit。 我有以下表格: 我应该调用什么方法来更新User属性? 我不想通过x:Name调用元素来调用绑定。 如果我必须通过x:Name来解决这些元素,就我而言,我也可以完全没有约束力。

如何将ItemsSource绑定到私有属性

如何将WPF和ItemsSource绑定到私有属性? public partial class ItemBuySellAddEdit : BasePage { private List Items { get; set; } } 表单加载时将填充项目列表。

从WPF UserControl访问ResourceDictionary

我正试图通过C#访问UserControl代码隐藏中的资源字典,但我收效甚微。 合并词典: 嵌入字典: /Resources/Images/default_thumb.png /Resources/Images/disconnect_thumb.png /Resources/Images/failed_thumb.png /Resources/Images/success_thumb.png 代码背后: var resourceDictionary = new ResourceDictionary(); resourceDictionary.Source = new Uri(“/Resources/BiometricDictionary.xaml”, UriKind.Relative); 我已经尝试了所有的例子和有用的提示,但很快就会出现。 现在,成功将是加载字典的能力。 有什么建议?

如何让WPF窗口自动调整内容,而不是更多

我有一个包含2个TextBlocks,一个进度条和一个取消按钮的对话框。 这是XAML: Window x:Class=”WpfApplication4.MainWindow” xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” xmlns:d=”http://schemas.microsoft.com/expression/blend/2008″ xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006″ xmlns:local=”clr-namespace:WpfApplication4″ mc:Ignorable=”d” Title=”MainWindow” Height=”Auto” Width=”200″> This is a really really really really long string that wraps 我希望窗口不要有一个固定的高度,但根据它的孩子的大小自动调整它的高度,但没有更多,但看不到这样做的方法。 在我没有为Window的高度指定任何东西的那一刻,它似乎采用了一个比内容更大的高度不确定原因,或者它从哪里得到高度值? 如果我设置Windows高度=“自动”我得到相同的东西。 RowDefinitions的所有高度都设置为“Auto”,我的意思是“将行高设置为行子高度”。 非常感谢您的帮助。

WPF如何在处理更多代码之前等待绑定更新?

据我所知,调度程序发生在另一个线程中,它负责更新数据绑定,布局等。但是,有没有办法等到调度程序没有更多的项目或至少没有更多的数据绑定? 我想确保属性更改已更新其所有组件,并在运行更多代码之前运行依赖属性更改的回调。 编辑:所以我猜这不是必需的,我只是想了解我本应该做些什么。 我的主要问题是WPF如果滚动查看器的子项resize,滚动查看器会自动更新其范围吗? 但我也很好奇我是否可以等待绑定更新,或者是否有任何保证,一个绑定在另一个之前更新? 我是否希望编码以使绑定更新的顺序无关紧要? 目前我使用依赖属性更改回调来执行各种通常依赖于其他属性更新的东西

WPF DataGridTextColumn绑定不接受小数

我不明白问题是什么。 绑定在Decimal属性上。 这是XAML: 我字面上不能输入’。’ 字符。 为什么它会阻止我输入那个字符,我怎么告诉它让我这样做。 我尝试做这样的字符串格式: 但这并没有解决我的问题,因为它所做的就是将“.00”附加到我键入的任何内容的末尾。 我只需要输入句号即可。 更新: 我被指示在这里 。 我删除了UpdateSourceTrigger属性,这使我可以输入’。’。 我没有安装4.5 Beta,我的本地化设置是正确的。 所以现在我的问题是如何让DataGridTextColumn允许我输入’。’ 是否设置了UpdateSourceTrigger属性?

ScrollViewer使用DataGrid缓慢执行

我有以下情况: 现在,当我将DataGrid绑定到大量数据(大约10,000行)时,我的性能非常慢。 事实上,我得到OutOfmemoryexception(我有8 GB的内存)! 我在某处读到这是因为ScrollViewer会覆盖DataGrid虚拟化(或类似的东西),但我不知道如何防止这种情况。 如果我删除ScrollViewer,问题就解决了! 数据加载时间不到一秒钟。 我想保留ScrollViewer(因为其他控件)并且具有良好的性能。 那可能吗? 如果没有,还有其他解决方案吗?

列表框ItemTemplate选择器不选择模板

我试图在我在不同文件上创建的网格中的列表框上使用ItemTemplateSelector,以便以后由MainWindow调用。 这是我的DataTemplateSelector代码 public class TemplateSelector : DataTemplateSelector { public override DataTemplate SelectTemplate(object item, DependencyObject container) { FrameworkElement element = container as FrameworkElement; if (element != null && item != null && item is myClass) { myClass agg = item as myClass; if(agg.myType == a) { return element.FindResource(“greenItemTemplate”) as DataTemplate; } else if (agg.myType == b) […]

在WPF中运行Flash

我正在尝试在我的WPF应用程序中运行.swf文件,我创建了一个html页面,并且我已经使用object标签引用了我的.swf文件,然后在我的Main Window加载了该html页面 我的xaml看起来像 <!—-> //tried with frame also but no luck 分配来源 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); myBrowser.Source = new Uri(CreateAbsolutePathTo(“playflash.htm”), UriKind.Absolute); } private static string CreateAbsolutePathTo(string mediaFile) { return System.IO.Path.Combine(new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName, mediaFile); } } 问题: 当我运行应用程序时,警告会发生ActiveX内容正在尝试访问等等,当我允许它时,我的主窗口中没有任何内容出现警告多次出现。 如果我直接在浏览器中运行Flash电影,它运行就好了。 问候。