Silverlight中的自定义控件和事件 - 赛车条件?

时间:2011-11-08 22:38:49

标签: c# silverlight events xaml binding

不幸的是,我无法提供良好的代码示例和场景来重现,但我希望之前有人有同样的问题。

基本上,我所经历的是行为,其中属性更改不会从我的VM升级到绑定属性。

<IdattControls:IdattLookup 
                Name="DeviceLookup"
                DataProvider="{Binding DeviceIdLookupProvider}"
                Id="{Binding CurrentItem.DeviceId, Mode=TwoWay, NotifyOnValidationError=True}"
                NextFocusableControl="{Binding ElementName=SerialNumberTextBox}"
                IsEnabled="{Binding State, Converter={StaticResource NavigatorEnabledConverter}}"
                Type="Navigator"
                Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" TabIndex="1" >
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="NavigationCompleted">
                        <i:InvokeCommandAction Command="{Binding NavigatorPopulatedCommand}" CommandParameter="{Binding Id, ElementName=DeviceLookup}" />
                    </i:EventTrigger>
                </i:Interaction.Triggers>                
            </IdattControls:IdattLookup>

NavigationCompleted事件在我的自定义控件(IdattLookup)中被触发时 - 视图模型执行一些操作(对服务进行异步调用,获取数据等),并且在异步操作完成时它会更改{{ 1}}属性。

IdattLookup没有获得此State

重要且奇怪当我尝试逐步执行propertychanged引发的代码时 - 它可以工作。但是如果我在没有断点的情况下运行它,我的控件就会保持启用状态转换器不会被调用,等等。

我只是猜测它必须与事件和线程有关,但不确定如何正确调试和修复它。

2 个答案:

答案 0 :(得分:0)

我弄清楚出了什么问题,但仍然不明白为什么。

IsEnabled属性不是我的new属性。我只是依靠Control的属性。 由于某种原因,没有提出propertyChanged。现在,在我创建了自己的 - 它神奇地开始工作。它几乎表现得像Mode = OneTime。但有时它神奇地起作用..

答案 1 :(得分:0)

  

调试是否绑定很有帮助。   在Visual Studio 2010,   首先,您可以进入Menu-&gt; Tools-&gt; Options-&gt; Debugging-&gt; OutputWindow。   然后在WPF跟踪设置中,您可以将数据绑定的值更改为“全部”,以查看是否在输出窗口绑定。