Чтобы решить эту проблему, я могу себе представить, что мне нужно использовать PRISM или селектор таблицы данных. Я не совсем уверен. Хорошо, позвольте мне объяснить мою ситуацию. У меня есть этот класс с именем BinaryProblem, и это модель.
public class BinaryProblem<T> {
public T Number1 { get; set; }
public T Number2 { get; set; }
}
BinaryProblem является универсальным классом, поэтому T может быть целым, двойным, десятичным или включающим другой, Fraction
.
public class Fraction {
public int Numerator {get;set;}
public int Denominator {get;set;}
}
Смысл в том, чтобы подумать о создании представления для примитивных типов данных и еще одного для дроби. Это вид:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<..Something.. Text="{Binding Number1}" Grid.Column="0" />
<TextBlock Grid.Column="1" Text="+" />
<..Something.. Text="{Binding Number2}" Grid.Column="2" />
</Grid>
Где говорит <..Something..>
, я не знаю, что делать. Идея состоит в том, что если T
является примитивным типом данных, следует рисовать только текстовый блок; но если тип данных Fraction должен показывать следующий шаблон или что-то вроде этого:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding Numerator}" />
<Rectangle Grid.Row="1" Fill="Black" Height="5" />
<TextBlock Grid.Row="2" Text="{Binding Denominator}" />
</Grid>
Я не хочу создавать два вида, я думаю, возможно ли избежать создания двух видов? Я имею в виду, чтобы иметь только один вид и определить, должен ли показываться шаблон дроби или текстовый блок.