DataTemplate還有一個令人頭痛的問題。SL4。通過ElementName綁定在DataTemplate中不起作用
描述: 使用Silverlight 4,MVVM等(Silverlight的LOB應用非標準組開發工具)。
實體列表成功綁定到DataGrid
。一個屬性(nullable bool BoolValue)負責實體行爲,並在圖片中顯示在數據網格中,單擊它們可以改變LayoutRoot元素中一些控件的可見性。
問題: 的問題在於,不幸或幸運的是,ElementName
內DataTemplate
結合不看到除了那些,被放置該模板內的其它元件。
代碼示例:
<navigation:DataGridTemplateColumn Width="40"
CanUserReorder="True"
CanUserSort="False">
<navigation:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border Background="GhostWhite">
<Grid>
<Image x:Name="ImageWithTrigger"
Grid.Column="1"
Margin="10,4,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Cursor="Hand"
Source="images/someImage.png"
Stretch="None"
Visibility={Binding BoolValue, Converter={StaticResource boolToVisibilityConverter} }>
<i.Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<AttachedBehaviors:TrickyBehavior FrameworkElementToHide="{Binding ElementName=FirstControlOutside}"
FrameworkElementToShow="{Binding ElementName=SecoundControlOutside}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Grid>
</Border>
</DataTemplate>
</navigation:DataGridTemplateColumn.CellTemplate>
</navigation:DataGridTemplateColumn>
在上面的例子,FrameworkElementToHide和FrameworkElementToShow總是零。
在互聯網上有很多非常相似的問題和解決方案,但我還沒有找到任何解決這個問題的簡單而優雅的方法。
你的意思是說''DataGrid'模板中的'ElementName'沒有辦法綁定? –
不,我不這麼認爲...... –
在Dan Wahlin的例子中,我發現只有訪問'DataTemplate'中的ViewModel的方法,但在我的情況下使用'StaticResource'似乎工作正常。 –