绑定到 ItemsSource 的实例
我在 WPF 用户控件上有一个 ListBox,定义为
<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 是 ViewModel 上的一个公共属性,其类型为 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 实例的 ExchangePrice 属性,例如 BuyItNowOptions[CurrentIndex].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;
}
希望这是有道理的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以通过不指定 Binding .path.aspx" rel="nofollow">
Path
或将其设置为.
,但是,如果存在以下任一情况,这将导致绑定不更新该对象的相关属性发生变化。我建议您使用
MultiBinding
相反,这样您就可以定位必要的属性,并且如果其中任何一个发生更改,绑定将更新。 (有关使用示例,请参阅 MSDN 上的相应部分)You can pass the whole datacontext-object to a
Binding
by not specifying aPath
or by setting it to.
, that however will result in the binding not updating if any of the relevant properties of that object change.I would recommend you use a
MultiBinding
instead, that way you can target the necessary properties and the binding will update if any of those change. (For usage examples see the respective section on MSDN)MyProperty="{Binding Converter={StaticResource ObjectToDerivedValueConverter}
应该可以。
MyProperty="{Binding Converter={StaticResource ObjectToDerivedValueConverter}
That should do it.