标签: binding

网格菜单项中的绑定命令出现问题

我有一个网格,位于名为 MediatedUserControl 的用户控件派生类内。我添加了一个上下文菜单来让用户删除一个项目,但我一直无法弄清楚如何将命令绑定到我的命令属性。我正在使用 MVVM,并且我的视图模型实现了一个名为 DeleteSelectedItemCommand 的公共 ICommand 属性。

但是,当显示视图时,我在输出窗口中收到以下消息:

System.Windows.Data 错误:4:无法找到引用“RelativeSource FindAncestor、AncestorType='BRO.View.MediatedUserControl”、AncestorLevel='1'' 进行绑定的源。BindingExpression:Path=DataContext.DeleteSelectedItemCommand; 数据项=空;目标元素是“BarButtonItem”(HashCode=6860584);目标属性是“Command”(类型“ICommand”)

我觉得我通常可以很好地处理这样的绑定,但无法弄清楚我在这里缺少什么。感谢您的任何帮助,您可以提供。

<dxg:GridControl HorizontalAlignment="Left" Margin="12,88,0,0" x:Name="gridControl1" VerticalAlignment="Top" Height="500" Width="517" DataSource="{Binding ItemList}" BorderBrush="{StaticResource {x:Static SystemColors.ActiveBorderBrushKey}}" ShowBorder="True" Background="{StaticResource {x:Static SystemColors.ControlLightBrushKey}}" UseLayoutRounding="False" DataContext="{Binding}">
<dxg:GridControl.Columns>
    <dxg:GridColumn FieldName="Code" Header="Code" Width="107" />
    <dxg:GridColumn FieldName="Name" Header="Item" Width="173" />
    <dxg:GridColumn FieldName="PricePerItem" Header="Unit Price" Width="70">
        <dxg:GridColumn.EditSettings>
            <dxe:TextEditSettings DisplayFormat="N2" />
        </dxg:GridColumn.EditSettings>
    </dxg:GridColumn>
    <dxg:GridColumn FieldName="Quantity" Header="Qty" Width="50" AllowEditing="True" />
    <dxg:GridColumn FieldName="TotalPrice" Header="Total Price" Width="90">
        <dxg:GridColumn.EditSettings>
            <dxe:TextEditSettings DisplayFormat="N2" />
        </dxg:GridColumn.EditSettings>
    </dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
    <dxg:TableView ShowIndicator="False" ShowGroupPanel="False" MultiSelectMode="Row" AllowColumnFiltering="False" AllowBestFit="False" …
Run Code Online (Sandbox Code Playgroud)

.net data-binding wpf binding

0
推荐指数
1
解决办法
1786
查看次数

从字符串绑定 IsEnabled 值

如何将字符串值绑定YNisEnabled 值?

<TextBox IsEnabled="{Binding Path=StringValueFromSomeEntity, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
Run Code Online (Sandbox Code Playgroud)

StringValueFromSomeEntity 可以是一个YN值。

wpf binding textbox wpf-controls isenabled

0
推荐指数
1
解决办法
2145
查看次数

将值绑定为 ConverterParameter

在我的资源字典中,我有以下样式:

 <Style TargetType="{x:Type propgrid:PropertyGridDataAccessorItem}" x:Key="{x:Type propgrid:PropertyGridDataAccessorItem}">
            <Style.Triggers>
                <Trigger Property="DataAccessorType" Value="Category">
                    <Setter Property="IsExpanded" Value="{Binding DisplayName, Converter={local:ExpandedCategoryConverter}}"/>
                </Trigger>
            </Style.Triggers>
  </Style>
Run Code Online (Sandbox Code Playgroud)

我需要将 viewModel 中的值绑定到 ConverterParameter,例如 ConverterParameter = {Binding MyProperty},但我们无法绑定到 ConverterParameter。

我该如何解决这个问题?

提前谢谢

wpf xaml binding

0
推荐指数
1
解决办法
8595
查看次数

从 XAML 中的 ControlTemplate 访问按钮的 Tag 属性

在我的窗口中,我有一系列六个按钮,它们指示我的 ViewModel 属性之一的六种可能状态。需要突出显示处于活动状态的那个。为此,我为按钮创建了以下 ControlTemplate:

<ControlTemplate x:Key="SnijRichtingTemplate" TargetType="Button">
    <Border Name="toggleButton" BorderThickness="1" BorderBrush="{StaticResource KleurRadioCheckOuter}" Background="Transparent" Width="20" Height="20" Cursor="Hand">
        <TextBlock Name="text" Foreground="{StaticResource KleurRadioCheckOuter}"
                   Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Tag}"
                   ToolTip="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Tag.ToolTip}"
                   HorizontalAlignment="Center" VerticalAlignment="Center" />
    </Border>

    <ControlTemplate.Triggers>
        <DataTrigger Value="True">
            <DataTrigger.Binding>
                <MultiBinding Converter="{StaticResource EqualityToBooleanConverter}">
                    <Binding Path="SnijRichting" />
                    <Binding Path="Tag" RelativeSource="{RelativeSource TemplatedParent}" />
                </MultiBinding>
            </DataTrigger.Binding>
            <Setter TargetName="toggleButton" Property="BorderBrush" Value="{StaticResource KleurTekstDonker}" />
            <Setter TargetName="text" Property="Foreground" Value="{StaticResource KleurTekstDonker}" />
        </DataTrigger>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter TargetName="toggleButton" Property="BorderBrush" Value="{StaticResource Kleur2}" />
            <Setter TargetName="text" Property="Foreground" Value="{StaticResource Kleur2}" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate> …
Run Code Online (Sandbox Code Playgroud)

wpf xaml binding parent controltemplate

0
推荐指数
1
解决办法
1788
查看次数

Qt5 QML QVariantMap 与更改通知绑定

我有 QVariantMap (不是 QObject,因为属性名称没有预定义)。我将 QVariantMap 注入到 QML 根上下文中以使用属性值进行绑定。

问题是,当我更改 QVariantMap 或什至当我更改 QVariantMap 并为更新的对象调用 setContextProperty 时,或者当我更新(使用 fromValue) contextProperty 返回的对象时,什么也没有发生。所以这看起来像是一次性绑定。

那么,以可观察的方式将 Map 或 Map 注入 QML 上下文中的正确方法是什么,以便映射中的更改项目将反映在 QML 中?

binding qt qml qt5 qt5.4

0
推荐指数
1
解决办法
3900
查看次数

禁用controlsFX WizardPane 中的“下一步”按钮?

在我的 JavaFX 项目中,我包含了一个使用Linear.Flow. 对于我的 WizardPane 之一,我希望将Next按钮的禁用属性绑定到布尔属性。(更具体地说,如果文本字段为空,则应禁用该按钮)。

但是,我无法找到任何解决方案。(此处提供的可能解决方案对我不起作用)。

这是我的向导窗格:

private WizardPane getName() {
    TextField textField = new TextField();
    textField.requestFocus();

    final WizardPane namePane = new WizardPane();

    namePane.setHeaderText("Choose Name for File");

    final GridPane grid = new GridPane();

    grid.add(new Label("File Name:"), 0, 0);
    grid.add(textField, 1, 0);

    namePane.setContent(grid);

    return namePane;
}
Run Code Online (Sandbox Code Playgroud)

我绑定disabled属性的失败尝试如下:

@Override
public void onEnteringPage(Wizard wizard) {
    this.getButtonTypes()
                .stream()
                .filter(type -> type.getButtonData().equals(ButtonBar.ButtonData.NEXT_FORWARD))
                .map(this::lookupButton)
                .findFirst()
                .ifPresent(next -> next.disableProperty().bind(textField.textProperty().isEmpty()));
}
Run Code Online (Sandbox Code Playgroud)

任何建议都非常感激。谢谢!

binding dialog javafx wizard controlsfx

0
推荐指数
1
解决办法
292
查看次数

没有类型,结构绑定不起作用?

我尝试做这样的事情

pair<int, int> f() {
    return {1, 2};
}

int a, b;
[a, b] = f();
Run Code Online (Sandbox Code Playgroud)

并得到编译错误。所有错误都归结为一个事实,即编译器认为它是一个语法错误的 lambda。所以如果我使用结构化绑定,我总是应该写auto?

c++ binding c++17

0
推荐指数
1
解决办法
51
查看次数

无法将“Published&lt;[StepsEntity]&gt;.Publisher”类型的值转换为预期参数类型“Binding&lt;String&gt;”

StepsEntity是核心数据实体

尝试在 TextField 中显示字符串值时收到以下错误:“无法将类型 'Published<[StepsEntity]>.Publisher' 的值转换为预期参数类型 'Binding'”

我知道这是因为我的核心数据模型中的 StepsEntity 是 @Published。@Published 在这里效果很好,因为它允许整齐地更新所有数据。如何在文本字段中显示@Published?

以下是我收到错误的部分:

List {
            VStack(alignment: .center) {
                if let recipeSteps = (vm.recipes[vm.getRecordsCount() - 1].steps?.allObjects as? [StepsEntity])?.sorted { $0.stepNumber < $1.stepNumber } {
                    
                    if (textFieldCount == 1) {
                        //do nothing
                    } else if (textFieldCount > 1) {
                        ForEach(recipeSteps, id: \.stepNumber) { index in
                            HStack {
                               
                                Text(String(index.stepNumber) + ".").bold()
                                TextField("", text: vm.$recipeSteps) //This is where the error is seen
                                
                            }
                        }.onDelete(perform: { index in
                            self.vm.deleteRecipeSteps(at: index, from: vm.recipes[vm.getRecordsCount() - 1])
                            }) …
Run Code Online (Sandbox Code Playgroud)

binding swift swiftui combine

0
推荐指数
1
解决办法
3870
查看次数

Haskell中的全局变量

我有这个功能:

map(\x -> l ++ [x]) "Show" where l = ""
Run Code Online (Sandbox Code Playgroud)

我想在地图函数的每一步保存l的值(例如我不想返回["S","h","o","w"],我希望它返回["S","Sh","Sho","Show"])

有人能帮我吗?

variables binding haskell

-1
推荐指数
1
解决办法
1341
查看次数

WPF绑定未更新

在我的View模型中,我有以下属性:

public Visibility IsModelBusy { get; set; }
Run Code Online (Sandbox Code Playgroud)

我有一个很长的处理任务:

private void DoSomething(object obj)
{
    IsModelBusy = Visibility.Visible;
    OnPropertyChanged("IsModelBusy"); 
    DoHeavyWork();
    IsModelBusy = Visibility.Collapsed;
    OnPropertyChanged("IsModelBusy");
}
Run Code Online (Sandbox Code Playgroud)

我有一个绑定到的UI元素IsModelBusy:

<Border Visibility="{Binding IsModelBusy, UpdateSourceTrigger=PropertyChanged}">
...
</Border>
Run Code Online (Sandbox Code Playgroud)

问题 我的边框永远不可见,主窗口挂起,而繁重的任务正在进行中(我无法在后台线程中运行)我尝试在传递给调度程序的操作中包装属性更改调用,没有运气,问题仍然存在仍然存在.

现在,如果我这样做:

private void DoSomething(object obj)
{
    IsModelBusy = Visibility.Visible;
    OnPropertyChanged("IsModelBusy"); 
    MessageBox.Show("What the...");  <=========
    DoHeavyWork();
    IsModelBusy = Visibility.Collapsed;
    OnPropertyChanged("IsModelBusy");
}
Run Code Online (Sandbox Code Playgroud)

随着介绍MessageBox,UI似乎处理属性更改事件并正确更新.

问题 如果不使用后台任务,我如何强制UI处理PropertyChanged事件?

c# wpf binding

-1
推荐指数
1
解决办法
508
查看次数