0

フォーラムでこれを注意深く確認しましたが、解決策が見つかりませんでした。

これは完璧に機能します:

 <Image Margin="0,0,0,0" Stretch="UniformToFill" Source="http://localhost:5313/Images/1.png"    MaxHeight="140" MinHeight="155" VerticalAlignment="Top"/>

これが機能しない理由:

<Image Margin="0,0,0,0" Stretch="UniformToFill" Source="{Binding ImagenSeleccionada}"    MaxHeight="140" MinHeight="155" VerticalAlignment="Top"/>

コードビハインド。

    private string _imagenSeleccionada;
    public string ImagenSeleccionada
    {
        get
        {
            return this._imagenSeleccionada;
        }
        set
        {
            if (this._imagenSeleccionada == value)
                return;

            this._imagenSeleccionada = value;
        }
    }

メインページ

制御

ItemsSource="{Binding FilteredTemperatureReports}" UseLayoutRounding="False" RowHeight="20" Horizo​​ntalAlignment="Stretch" VerticalAlignment="Stretch" SelectionMode="Single" Horizo​​ntalGridLinesBrush="Transparent" VerticalGridLinesBrush="Transparent" Background="{x:Null }" BorderBrush="{x:Null}" IsFilteringAllowed="False" RowIndicatorVisibility="Collapsed" CanUserFreezeColumns="False" ShowGroupPanel="False" HeaderRowStyle="{StaticResource GridViewHeaderRowStyle}" GroupRowStyle="{StaticResource GridViewGroupRowStyle}" RowStyle="{StaticResource GridViewRowStyle}">

    <telerik:GridViewDataColumn Width="150" DataMemberBinding="{Binding Medio}" IsReadOnly="True" Header="Medio" 
                                                HeaderCellStyle="{StaticResource GridViewHeaderCellStyleFirst}"
                                                CellStyle="{StaticResource GridViewCellStyle}" />
    <telerik:GridViewDataColumn Width="80" DataMemberBinding="{Binding TimeStamp}" IsReadOnly="True" Header="Fecha" DataFormatString="{} {0:dd/MM/yyyy}"  
                                                HeaderCellStyle="{StaticResource GridViewHeaderCellStyle}"
                                                CellStyle="{StaticResource GridViewCellStyle}"/>
    <telerik:GridViewDataColumn Width="200" DataMemberBinding="{Binding Producto}" IsReadOnly="True" Header="Producto" 
                                                HeaderCellStyle="{StaticResource GridViewHeaderCellStyle}"
                                                CellStyle="{StaticResource GridViewCellStyle}"/>
    <telerik:GridViewDataColumn Width="180" DataMemberBinding="{Binding Version}" IsReadOnly="True" Header="Version" 
                                                HeaderCellStyle="{StaticResource GridViewHeaderCellStyle}"
                                                CellStyle="{StaticResource GridViewCellStyle}"/>
    <telerik:GridViewDataColumn Width="80" DataMemberBinding="{Binding Inversion}" IsReadOnly="True" Header="Inversion" DataFormatString="{}{0:C}" 
                                                HeaderCellStyle="{StaticResource GridViewHeaderCellStyle}"
                                                CellStyle="{StaticResource GridViewCellStyle}"/>
    <telerik:GridViewDataColumn Width="80" DataMemberBinding="{Binding Ytd}" IsReadOnly="True" Header="YTD" DataFormatString="{}{0:C}" 
                                                HeaderCellStyle="{StaticResource GridViewHeaderCellStyle}"
                                                CellStyle="{StaticResource GridViewCellStyle}"/>
    <telerik:GridViewColumn Width="80" IsReadOnly="True" Header="Product" 
                                                HeaderCellStyle="{StaticResource GridViewHeaderCellStyle}" 
                                                CellStyle="{StaticResource GridViewCellStyle}" >

グリッドの背後にあるコード。

void OnGridViewSelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangeEventArgs e)
{
    var grid = sender as RadGridView;
    if (grid.SelectedItem != null)
    {
        grid.ScrollIntoView(grid.SelectedItem);
            var _internetDataViewModel = this.DataContext as InternetDataViewModel;
            _internetDataViewModel.ImagenSeleccionada = ((ExecutiveDashboard.TemperatureData)(grid.SelectedItem)).Image;
    }
}

よくないことは何ですか?

タナクス

4

1 に答える 1

0

は、の{Binding}場所を自動的に認識しませんImagenSeleccionada

特定の要素、通常は名前付きユーザー コントロールにリンクする必要があります。

<UserControl x:Name="ThisCtrl" .... >
    <Image Source="{Binding ImagenSeleccionada, ElementName=ThisCtrl}" ... />

DataContextまたは、ユーザー コントロールの をそれ自体に明示的に設定します。次に、DataContextユーザー コントロールの子にまで伝播します。

<UserControl DataContext="{Binding RelativeSource={RelativeSource Self}}" ... >
    <Image Source="{Binding ImagenSeleccionada}" ... />

(または、コード ビハインド コンストラクターでDataContexttoを設定することもできます)。this

または、できればそのタイプを介して、ユーザー コントロールである祖先にイメージ バインディングの相対ソースを設定できます。

<UserControl ...>
    <Image Source="{Binding ImagenSeleccionada,
           RelativeSource={RelativeSource AncestorType=local:YourUserControlType}}" ... />
于 2013-05-17T07:04:48.877 に答える