2011-09-27 75 views
0

的实例我有一个WPF用户控制列表框被定义为绑定到的ItemsSource

<ListBox Grid.Row="1" ScrollViewer.CanContentScroll="False" Background="#00000000" BorderThickness="0" ItemsSource="{Binding BuyItNowOptions}" 
              ItemTemplate="{DynamicResource BuyItNowDataTemplate}" IsSynchronizedWithCurrentItem="True" 
              Style="{DynamicResource InheritEmptyListStyle}" SelectedItem="{Binding SelectedResearch}" ItemContainerStyle="{DynamicResource ListBoxItemStyle}"/> 

BuyItNowOptions是上视图模型即类型的ObservableCollection

的在BuyItNowDataTemplate我有一个公共属性有一些逻辑显示价格之前执行需要的标签。

<Label Padding="1" HorizontalContentAlignment="Stretch" Grid.Column="2" Grid.Row="2" Margin="1"> 
        <TextBlock Text="{Binding ExchangePrice, StringFormat=C}" 
         Visibility="{Binding ReturnRequired, Converter={StaticResource BooleanToVisibilityConverter}}"/> 
       </Label> 

的这里结合表明它将使用AutoResearchProxy的实例,它是像BuyItNowOptions [CURRENTINDEX] .ExchangePrice的ExchangePrice财产。

我想知道的是有可能以这样的方式创建绑定,即它引用AutoResearchProxy的整个实例,以便我可以将它传递给转换器并处理AutoResearchProxy的多个属性并返回计算结果价钱?

我会想象我的转换器看起来像这样。

public class PriceConverter : IValueConverter 
{ 
public object Convert(object value, Type targetType, object parameter,  System.Globalization.CultureInfo culture) 
{ 
    if (value is AutoResearchProxy) 
    { 
    var research = value as AutoResearchProxy; 
    //Some logic to figure out actual price 

    } 
    else 
    return String.Empty; 
} 

希望这是有道理的。

回答

0

MyProperty="{Binding Converter={StaticResource ObjectToDerivedValueConverter}

应该这样做。

+0

如果你想有一个逗号出现,那么你应该在其之前加'.'。 –

+0

@ H.B。纠正错字 – Gishu

0

您可以通过不指定Path或将其设置为.整个DataContext的对象传递给Binding,但是这会导致如果任何物体变化的相关属性的结合没有更新。

我建议你使用MultiBinding来代替,这样你可以定位必要的属性,如果有任何改变,绑定将会更新。 (有关用法示例,请参阅MSDN上的各个部分)

相关问题