标签: multibinding

wpf multibinding to viewmodel?

对于我的生活,我似乎无法使用multibindings绑定到我的viewmodel.net上的所有示例都直接绑定到gui元素,但每当我尝试使用viewmodel对象时,都会抛出异常.

我的问题是,如何在xaml中为多个viewmodel对象添加多绑定?

我需要将上下文菜单的IsEnabled属性绑定到我的viewmodel中的两个整数.以下绑定不起作用,因为它是为GUI组件设计的.如何使用我的整数?

<MenuItem ItemsSource="{Binding MyMenuItem}">
    <MenuItem.IsEnabled>
        <MultiBinding>
            <Binding ElementName="FirstInt" Path="Value" />
            <Binding ElementName="SecondInt" Path="Value" />
        </MultiBinding>
    </MenuItem.IsEnabled>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)

MyMenuItem是CLR对象,带有两个整数FirstInt和SecondInt.

wpf mvvm multibinding

5
推荐指数
2
解决办法
1万
查看次数

Metro UI Multibinding?

Metro UI中不支持多绑定吗?或者它还没有被添加?

<TextBlock>
  <TextBlock.Text>
    <MultiBinding StringFormat="{}{0},{1}">
      <Binding Path="FirstName" />
      <Binding Path="LastName" />
    </MultiBinding>                
  </TextBlock.Text>                
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

multibinding microsoft-metro

5
推荐指数
1
解决办法
2410
查看次数

Multibinding ConvertBack没有将正确的值传递给source?

有一个非常奇怪的问题令我感到困惑.就像下面的代码一样,我创建了一个[Button]并将其[Canvas.LeftProperty]多重绑定到[Entity.X]和[Entity.Z].[实体] ]类已实现[INotifyPropertyChaned].

它在Convert()方法中运行良好,[Entity.X]和[Entity.Z]正确传递给[Canvas.LeftProperty].

但问题是:当我用Canvas.SetLeft()方法更改[Button]的位置时,转换了ConvertBack()方法,但是没有将正确的值传递给[Entity],[in]中的[value] Entity.X]的设置部分似乎始终是旧部分.

PS:我发现了一个类似的问题,但它也没有解决.. :(

类似的问题:http://social.msdn.microsoft.com/Forums/zh-CN/wpf/thread/88B1134B-1DAA-4A54-94ED-BD724724D1EF

XAML:

<Canvas>
  <Button x:Name="btnTest">
<Canvas>
Run Code Online (Sandbox Code Playgroud)

BindingCode:

private void Binding()
{
 var enity=DataContext as Entity;
 var multiBinding=new MutiBinding();
 multiBinding.Mode=BindingMode.TwoWay;
 multiBinding.Converter=new LocationConverter();
 multiBinding.Bindings.Add(new Binding("X"));
 multiBinding.Bindings.Add(new Binding("Z"));
 btnTest.SetBinding(Canvas.LeftProperty,multiBinding);
}
Run Code Online (Sandbox Code Playgroud)

转换器:

public class LocationConverter: IMultiValueConverter
{
  public object Convert(object[] values, TypetargetType,object parameter, CultureInfo culture)
  {
    return (double)values[0]*(double)values[1];
  }

  public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
  {
    return new object[]{ (double)value,Binding.DoNoting};//!!value here is correct
  }
}
Run Code Online (Sandbox Code Playgroud)

实体:

public class Entity:INotifyPropertyChanged
{ …
Run Code Online (Sandbox Code Playgroud)

wpf multibinding

5
推荐指数
1
解决办法
2750
查看次数

WPF对象将自身发送为MultiBinding路径

基本上我需要知道的是如何将一个源发送HierarchicalDataTemplate到一个绑定,这就是我所拥有的:

<HierarchicalDataTemplate DataType="{x:Type myModel:Person}">
    <StackPanel Orientation="Horizontal">
        <Image Source="Images\User.gif" />
        <TextBlock Margin="5,0,0,0" Text="{Binding Name}" />
    </StackPanel>
    <HierarchicalDataTemplate.ItemsSource>
        <MultiBinding Converter="{StaticResource PersonConverter}">
            <Binding Path="Name" />
            <!-- Here I need something like Binding Path="Self" so I can send the source of the binding (the "Person" object) -->
        </MultiBinding>
    </HierarchicalDataTemplate.ItemsSource>
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)

所以我的源代码是一个类型的对象myModel:Person,我希望能够发送对象本身,MultiBinding以便PersonConverter可以使用它.

谢谢你的帮助.

data-binding wpf hierarchicaldatatemplate multibinding

4
推荐指数
1
解决办法
3249
查看次数

为什么要使用多重绑定转换器?

我不能只使用一个绑定转换器,并作为参数传递到DataContext,并从那里选择我想要使用的属性?

c# data-binding wpf xaml multibinding

4
推荐指数
1
解决办法
343
查看次数

使用VB.Net在Silverlight中进行多重绑定

我正在尝试使用VB.Net在Silverlight中实现多绑定.我发现在C#实现一个很好的参考这里.我花了一些时间尝试使用各种转换器将其迁移到VB.Net但我仍然没有让它正常工作.所以..

我正在寻找一些参考资料来举例说明如何在VB.Net中完成MultiBinding.

还使用Silverlight 5 Beta测试阶段的例子就可以了(我在阅读后在这里对堆栈溢出,它支持multibinding).

.net vb.net data-binding silverlight multibinding

4
推荐指数
1
解决办法
772
查看次数

c#wpf Multibindings不可用

我想做的很简单.我有一个窗口,我希望标题绑定到两个不同的属性.每当其中一个属性更改时,都应更新标题.

我先尝试过但没有工作

<Window x:Class="MyNamespace.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="{Binding Path=Clientname} {Binding Path=LoadedConfiguration}" 
Run Code Online (Sandbox Code Playgroud)

那么我在这里这里阅读有关Multibindings的内容.并尝试了它的使用,这实际上也不起作用

<Window x:Class="MyNamespace.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Window.Title>
    <Multibinding StringFormat="{}{0} + {1}">
        <Binding Path="Clientname" />
        <Binding Path="LoadedConfiguration" />
    </Multibinding>
</Window.Title>
Run Code Online (Sandbox Code Playgroud)

错误是在WPF项目中不支持Multibinding,我认为没有任何意义.

所以,我猜测的是缺少xmlns或缺少.dll.我发现Multibindings在"PresentationFramework.dll"里面,我已经引用了它.根据msdn,你需要http://schemas.microsoft.com/winfx/2006/xaml/presentationhttp://schemas.microsoft.com/netfx/2007/xaml/presentation来包含,我做了.

在这里,我可能实际上没有得到任何进一步,我希望你得到.

c# wpf binding multibinding

4
推荐指数
1
解决办法
1610
查看次数

MultiBinding 中子绑定的转换器

假设我有这个多重绑定:

<MultiBinding Converter="{StaticResource FooBarConverter}>
  <Binding Path="Foo" Converter="{StaticResource FooConverter}" />
  <Binding Path="Bar" Converter="{StaticResource BarConverter}" />
</MultiBinding>
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用:传递给FooBarConverter 的值数组包含DependencyProperty.UnsetValue每个值(在本例中为两个)。删除子绑定上的转换器(FooConverterBarConverter)给我实际值。顺便说一句:这些转换器被正确调用,只是看起来它们的结果被丢弃了。

这是有意的行为吗?我想绑定 2 个属性,因为我需要在将它们放入MultiValueConverter...之前至少转换其中之一。

wpf multibinding

3
推荐指数
1
解决办法
8927
查看次数

IMul​​tiValueConverter值没问题,但CommandParameter为null

我试图通过IMultiValueConverter将几个值传递给命令(作为命令参数).这些值在通过转换器时是正确的,但是一旦调用了Can_Execute()和Execute()命令,我就会获得一个空对象数组.有任何想法吗?

XAML:

    <Button Content="+" HorizontalAlignment="Right" VerticalAlignment="Top" Width="23" Height="23" Margin="0,0,0,0">
        <Button.CommandParameter>
            <MultiBinding Converter="{StaticResource Converter_MultipleValues}">
                <Binding/>
            </MultiBinding>
        </Button.CommandParameter>
        <Button.Command>
            <Binding Path="Command_Add_Files" Source="{StaticResource Vm_FileList}"/>
        </Button.Command>
    </Button>
Run Code Online (Sandbox Code Playgroud)

IMul​​tiValueConverter类:

class cvt_multivalue : IMultiValueConverter {
    public object Convert (object[] Values, Type Target_Type, object Parameter, CultureInfo culture) {
        if (Target_Type != typeof (object)) throw new NotSupportedException ();
        return Values;
        }

    public object [] ConvertBack (object Value, Type [] Target_Type, object Parameter, CultureInfo culture) {
        throw new NotSupportedException ();
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我没有使用MultiBinding和转换器时,代码工作得很好,但我需要MultiBinding,所以我可以将一些额外的信息传递给命令.

wpf multibinding commandparameter

3
推荐指数
1
解决办法
2069
查看次数

我可以使用多重绑定进行文本搜索

我在mvvm-wpf应用程序中有下面的组合框.我需要在此实现"文本搜索"..(以及多重绑定).请有人帮帮我.

<StackPanel Orientation="Horizontal">
    <TextBlock Text="Bid Service Cat ID"
                Margin="2"></TextBlock>
    <ComboBox Width="200"
                Height="20"
                SelectedValuePath="BidServiceCategoryId"
                SelectedValue="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}},
                    Path=DataContext.SelectedBidServiceCategoryId.Value}"
                ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}},
                    Path=DataContext.BenefitCategoryList}"
                Margin="12,0">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock DataContext="{Binding}">
                            <TextBlock.Text>
                                <MultiBinding StringFormat="{}{0}: {1}">
                                <Binding Path="BidServiceCategoryId" />
                                <Binding Path="BidServiceCategoryName" />
                            </MultiBinding>
                            </TextBlock.Text></TextBlock>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

wpf text mvvm multibinding

2
推荐指数
1
解决办法
3969
查看次数