2017-12-11 14 views
-1

私は 'GameControl:FrameworkElement'を持っています。私はこのようなXAMLでそれを持っている:TextBlockを自己作成のFrameworkElementプロパティにバインドするにはどうすればよいですか?

<local:GameControl x:Name="control"/> 

このGameControlは自分のクラスであるという性質を持っていますように

public Gem selectedGem {get; set;} 

、私は、TextBlockのには、この宝石の情報を書きたいですプレーヤーはそのプロパティを見るでしょう。

どのように私自身のFrameworkElementのプロパティをMainWindowの要素にバインドするのですか?

-

全XAML:

<Window x:Class="GemTowerDefense.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:GemTowerDefense" 
    mc:Ignorable="d" 
    Title="Gem Tower Defense" Height="670" Width="800" 
    ResizeMode="NoResize"> 
<Grid> 
    <Border Background="Gray" Height="600" Width="600" Margin="3,26,189,3"> 
     <local:GameControl x:Name="control"/> 
    </Border> 

    <Border Background="LightSlateGray" HorizontalAlignment="Left" VerticalAlignment="Top" Height="285" Margin="608,181,0,0" Width="170"> 
     <TextBlock x:Name="tbInfo" Text="Gem information"> 
     </TextBlock> 
    </Border> 
</Grid> 
</Window> 

答えて

1
(テキストの代わりに=宝石の情報は、私がコントロールのselectedGemに結合する、またはその文字列型プロパティの一つにしたいです)

プロパティをdependency propertyにし、そのプロパティをTextBlock.Textにバインドするときにコンバータを使用します。 Stackoverflowを検索して、両方のトピックで数十億の例を見つけてください。

public class ExampleConverter : MarkupExtension, IValueConverter 
{ 
    public ExampleConverter() 
    { 

    } 

    public override object ProvideValue(IServiceProvider serviceProvider) 
    { 
     return this; 
    } 

    #region IValueConverter Members 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if(value != null && value is Gem) 
      return (value as Gem).GemAsText(); 
     return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value; 
    } 
    #endregion 
} 
+0

TYVM:私はコードビハインドでコンバータを作成することが最も簡単見つける

Text="{Binding ElementName=control, Mode=OneWay, Path=selectedGem, Converter={local:ExampleConverter}}" 

:結合は、次のようになります!私は確かに多くのソリューションを見てきましたが、スキップしたものはすべてでした.Binding ElementName =私が知らないコントロールが存在し、DataContextとPathおよび静的リソースとしてのみ使用しました。これは私の問題を不公平に解決しました。 – Dragonturtle

関連する問題