我有一个选择'全部'复选框,我想绑定到其他复选框的(IsChecked ||!IsEnabled).
选中"全部"选中所有已启用的复选框.
取消选中"全部"取消选中所有复选框.
手动检查每个已启用的复选框将选中"全部".
选中所有已启用的复选框并选中"全部"并且用户取消选中任何复选框后,"全部"会自动取消选中.
我是WPF Databinding的新手.我想也许我只是点击"全部"来设置其他复选框.但我不知道如何绑定到多个源的两个属性.当我点击"全部"并手动取消选中另一个复选框时,"全部"需要取消选中.
我想根据另一个ComboBox中是否选择了一个项来启用/禁用ComboBox.我能够通过在Style上设置触发器来使其工作,但这会覆盖我对组合框的自定义全局样式.有没有另一种方法来获得相同的功能而不会失去我的风格?
<ComboBox Grid.Column="1" Grid.Row="1"
Name="AnalysisComboBox"
MinWidth="200"
VerticalAlignment="Center" HorizontalAlignment="Left"
ItemsSource="{Binding Path=AvailableAnalysis}">
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItem,ElementName=ApplicationComboBox}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
Run Code Online (Sandbox Code Playgroud) 我想在WPF元素上监听对IsEnabled属性的更改(这样我可以在每次更改时运行一些公共代码),而不必在每个窗口/页面中加载大量代码.
我还想避免因强大的事件监听器而导致内存泄漏的任何潜在问题.我遇到过一些建议使用弱事件监听器等的文章,但对于看起来应该非常简单的事情来说,这看起来非常复杂.
我不想为了做到这一点而需要子类控件,因为有几种控件类型(以及将来可能更多)我想要监听IsEnabled的更改.
有没有人想出一个更简洁的处理方式?
如果绑定值为false或null,请使用我想要禁用的按钮.这是我试过的.
<Button Content="Open" IsEnabled="{Binding SearchItem.WFBatchFolderStatus.UserCanOpen, Mode=OneWay, TargetNullValue=false, Converter={StaticResource booleanPassThru}}" />
Run Code Online (Sandbox Code Playgroud)
我有一个案例,其中SearchItem.WFBatchFolderStatus可以为null(并且出于有效的商业原因).如果SearchItem.WFBatchFolderStatus为null,那么我想要禁用该按钮.当SearchItem.WFBatchFolderStatus为null时,转换器不会触发.如果SearchItem.WFBatchFolderStatus不为null,则转换器将触发.如果值为null,则转换器仅返回false,否则返回值.但转换器永远不会看到空值.当SearchItem.WFBatchFolderStatus为null时,按钮IS启用(不是我想要的).如果我删除了TargetValue和/或Converter,那么当SearchItem.WFBatchFolderStatus为null时,仍然会启用按钮.
我在网格中有一个按钮,其中包含许多其他按钮和控件
<Grid IsEnabled="false">
<Grid.ColumnsDefinition>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnsDefinition>
<Button Content="Run"/>
<Button Grid.Column="1" Content="Test"/>
<Button Grid.Column="2" Content="Cancel" IsEnabled="true"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
如您所见,网格已禁用,但其中的取消按钮应启用.
我遇到的问题是,即使我将内部按钮设置为启用,它仍然处于禁用状态,可能是因为其父级已禁用.
有没有办法覆盖此行为并强制启用该按钮?
我正在使用它来处理在后台运行长进程的情况,因此应禁用除取消进程之外的所有UI操作.
谢谢!
是否有可能以编程方式检查这个?
设置 - >关于设备 - >软件更新 - >自动更新(自动检查更新)
我有一个自定义的 SplitButton 实现,其中包含一个 ComboBox,其中有多个绑定到命令的 ComboBoxItem。我可以很好地绑定到命令的 Name 和 Text 属性,但无法将 ComboBoxItem 的IsEnabled属性绑定到 Command 的CanExecute方法的结果,因为它是一个方法。是否有一些我不知道的用于绑定到方法的语法,或者是否有一些技巧可以帮助我绑定到 CanExecute。
顺便说一句,我考虑过使用自定义 ValueConverter,除了我意识到重新评估 CanExecute 时我可能不会收到任何更新,因为它不是属性,而且我的命令不是业务对象。在我看来,此时我可能必须为命令创建一个 ViewModel,以便仅在我的自定义 SplitButton 控件中使用,但这对我来说似乎有点过分了。
我的WPF应用程序现在有点问题...
我有一个用于编辑组件详细信息的自定义UserControl。它应该从未启用开始,并在用户选择要编辑的组件后立即启用。
问题是:IsEnabled属性甚至都不会更改。
这是我的代码:
<my:UcComponentEditor Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
IsEnabled="{Binding EditorEnabled}"
DataContext="{Binding VmComponent}" />
Run Code Online (Sandbox Code Playgroud)
EditorEnabled是我的ViewModel(VmComponent)中的一个属性,默认为false,当用户选择一个组件或创建一个组件时变为true
仅作记录,在我的ViewModel中:
private Boolean _editorEnabled = false;
public Boolean EditorEnabled
{
get { return _editorEnabled; }
set
{
_editorEnabled = value;
OnPropertyChanged("EditorEnabled");
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试启动我的应用程序时,UserControl正在启动...启用。我到处都添加了断点,EditorEnabled从一开始就是假的。
我也做了一件非常愚蠢的事情,试图弄清楚发生了什么:我创建了一个转换器(非常有用-将布尔值转换为布尔值-嗯),在其上设置一个断点,然后……代码从未到达。
<my:UcComponentEditor Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
IsEnabled="{Binding EditorEnabled, Converter={StaticResource BoolConverter}}"
DataContext="{Binding VmComponent}" />
Run Code Online (Sandbox Code Playgroud)
这可能意味着永远不会设置属性isEnabled,因为永远不会到达转换器。
您在那看到任何问题吗?大约一周前,我开始在WPF工作,因此我可能错过了一些重要的东西...
非常感谢您的宝贵时间 :-)
我有一个Button和它的风格:
<Button Name="MyBtn" Style="{StaticResource ButtonEnabledStyle}"
IsEnabled="False" Opacity="1" />
<Style x:Key="ButtonEnabledStyle" TargetType="Button">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True" >
<Setter Property="Opacity" Value="0.1" />
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
但是当我启用Button(MyBtn.IsEnabled = true)时,它不会改变它的不透明度.为什么?我怎么解决这个问题?谢谢.
我在这里找到的解决方案使用的.enabled是旧的,而不是.isEnabled.
因此,如果满足(或不满足)某个条件,我正在尝试仅禁用按钮的功能/可点击性。所以在这一切之前,如果不满足条件,我将它们全部禁用,然后如果在(动态)之后满足它,那么理论上应该启用。话虽如此,当我从.isEnabled = false.
我知道满足条件是因为我有打印语句和其他测试(比如标签从超级视图中删除但.isEnabled = false按钮不起作用。有人遇到过上述问题或有任何解决方案吗?
代码如下:
override func viewDidLoad()
{
super.viewDidLoad()
trumpMoneyDefault.setValue(50, forKey: "TrumpMoney")
print("UnoViewController")
//make all the buttons that shouldn't be clickable unlcickable
locklvl2.isEnabled = false
locklvl3.isEnabled = false
trumplvl2.isEnabled = false
trumplvl3.isEnabled = false
lvl2.isEnabled = false
lvl3.isEnabled = false
//make level2/3 unclickable by defeault
//lvl2.isEnabled = false
//lvl3.isEnabled = false
//update trumpmoney label depending on if they have enough cash
//also here check if they have already …Run Code Online (Sandbox Code Playgroud)