我已经创build了一个自定义的WPF用户控件,这个控件可以被第三方使用。 我的控制有一个私人成员是一次性的,我想确保其处理方法将永远被调用一旦包含的窗口/应用程序closures。 但是,UserControl不是一次性的。 我尝试实现IDisposable接口并订阅Unloaded事件,但是在主机应用程序closures时不会调用。 如果可能的话,我不想依赖于我的控制的消费者记得调用一个特定的Dispose方法。 public partial class MyWpfControl : UserControl { SomeDisposableObject x; // where does this code go? void Somewhere() { if (x != null) { x.Dispose(); x = null; } } } 我目前find的唯一解决scheme是订阅Dispatcher的ShutdownStarted事件。 这是一个合理的方法吗? this.Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;
我试图显示一个工具提示,无论button状态,但这似乎并没有把戏: <Button Command="{Binding Path=CommandExecuteAction}" ToolTip="{Binding Path=Description}" ToolTipService.ShowOnDisabled="true" Style="{StaticResource toolbarButton}"> <Image Source="{Binding Path=Icon}"></Image> </Button> 如何显示工具提示当button被禁用由于command.CanExecute返回false? 注意: ToolTipService.ShowOnDisabled =“true”就像一个魅力。 这个在我的例子中不起作用的原因是因为与button相关联的样式重新定义了控件模板,并且当button被禁用时(IsHitTestVisible = false),closuresbutton的命中testing。 在控制模板中重新启用命中testing使得在禁用button时出现工具提示。
我遵循这个关于如何向ItemsControl添加滚动条的小教程,它在Designer视图中工作,但不是当我编译和执行程序时(只有前几个项目出现,没有滚动条查看更多 – 甚至当VerticalScrollbarVisibility设置为“可见”而不是“自动”)。 任何想法如何解决这个问题? 这是我用来显示我的项目的代码(通常我使用Databinding,但要查看我的devise器中的项目,我手动添加它们): <ItemsControl x:Name="itemCtrl" Style="{DynamicResource UsersControlStyle}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Top"> </StackPanel> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <uc:UcSpeler /> <uc:UcSpeler /> <uc:UcSpeler /> <uc:UcSpeler /> <uc:UcSpeler /> </ItemsControl> 这是我的模板: <Style x:Key="UsersControlStyle" TargetType="{x:Type ItemsControl}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ItemsControl}"> <Border SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"> <ScrollViewer VerticalScrollBarVisibility="Visible"> <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> […]
请看下面一行 <TextBox Text="{Binding Price}"/> 这个价格属性从上面是一个Decimal? (可为空的十进制)。 我希望如果用户删除文本框的内容(即进入空string,它应该自动更新源空(VB中没有)。 关于如何做到“Xamly”的任何想法?
我有一个情况,我需要显示一个整数值,绑定到我的数据上下文属性,通过两个单独的转换后: 反转范围内的值(例如范围是1到100; datacontext中的值是90;用户看到值10) 将数字转换为string 我意识到我可以通过创build我自己的转换器(实现IValueConverter)来完成这两个步骤。 不过,我已经有一个单独的值转换器,只是第一步,第二步是由Int32Converter覆盖。 有没有办法可以链接这两个现有的类在XAML中,而不必创build一个进一步的聚合它们的类? 如果我需要澄清这一点,请让我知道。 🙂 谢谢。
我在WPF中编写我的第一个应用程序,并希望用户在模态对话窗口上input一些数据。 显然,这在WPF中并不简单,因为父窗口保持完全启用状态,并且创build新子窗口的方法不会停止并等待子窗口调用Close()。 相反,它只是继续前进。 这不是我想要的。 我怎样才能让子窗口打开,并有父窗口等待子窗口closures之前父窗口继续执行?
在我的几个用户控件上,我通过使用改变光标 this.Cursor = Cursors.Wait; 当我点击一些东西。 现在我想在button点击的WPF页面上做同样的事情。 当我将鼠标hover在我的button上时,光标变成一只手,但是当我点击它时,它不会更改为等待光标。 我想知道这是否与事实,这是一个button,或因为这是一个页面,而不是一个用户控件? 这似乎很奇怪的行为。
这似乎是一个没有头绪,但我不知道该怎么做。 DataGrid中选定行的默认背景颜色太深,以致于无法读取它。 有没有压倒一切呢? 试了这个(从Neverminds链接修改) <dg:DataGrid.RowStyle> <Style TargetType="{x:Type dg:DataGridRow}"> <Style.Triggers> <Trigger Property="IsSelected" Value="True" > <Setter Property="Background" Value="Gainsboro" /> </Trigger> </Style.Triggers> </Style> </dg:DataGrid.RowStyle> 但还是没有…
是否可以轻松地为WPF Grid中的行或列指定边距和/或填充? 我当然可以添加额外的列空间的东西,但这似乎是一个填充/边距的工作(这将给予更简单的XAML)。 有人从标准网格派生出来添加这个function吗?
在进一步深入之前,我会提到我已经尝试了下面的解决scheme: 如何在Visual Studio 2008中为我的应用程序设置图标? 从VS 05中的资源设置应用程序图标 我想为我的应用程序设置一个图标。 AFAIK,我需要潜在的3张图片? 1图像是在浏览器中的实际图像时单击.exe(缩略图的EXE) 1图像(微小)在左上angular(16×16?不完全确定) 1图像在开始菜单停靠,在应用程序的左侧(也许32×32?再次不能确定) 所以这很好。 现在我select了一个图标。 如何在以上情况中使用它? 我曾尝试将其添加到资源中,似乎没有任何事情发生。 继第一个SO解决scheme之后, “首先进入资源视图(从菜单:视图 – >其他窗口 – >资源视图),然后在资源视图中导航资源,如果有的话,如果已经有一个图标types的资源,由Visual Studio添加,那么打开并编辑它,否则右键单击并select添加资源,然后添加一个新的图标。 资源视图是空的,我不能在这个视图中右键单击。 如果我右键单击解决scheme>属性>资源>我可以添加图标图像,但它不显示在上面列出的任一位置。 (或者我能看到的任何地方) 1)如何设置WPF应用程序的应用程序图标?