でそれを使用する:あなたが見ることができるようにユーザーコントロール - 私はカスタムコントロールを持つカスタム列挙型を宣言して、VMの
<UserControl>
<Grid x:Name="Layout">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="{Binding ProtocolType, TargetNullValue='https://'}" />
<TextBox Grid.Column="1"
VerticalContentAlignment="Center" MinWidth="200" Text="{Binding Hostname, UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" />
<Label Grid.Column="2" Content="{Binding PathType}" />
<ProgressBar Grid.Column="3" IsIndeterminate="True" Width="40" Height="10"
HorizontalContentAlignment="Center" />
<Image Grid.Column="3" Width="16" Height="16" />
</Grid>
、それはプログレスバーとイメージを持っています。プログレスバーは、何かがやっているときに表示され、画像は結果を示します(ok/bad)。私が欲しいのは、MainViewのボタンを押すとプログレスバーが表示され、操作が完了すると結果が画像として表示され、プログレスバーが非表示になります。 私の計画は、4つの州でenumを宣言することでした - 何も進まず、ok、悪いです。しかし、私は列挙型を宣言し、ユーザーコントロールのいくつかのコントロールを操作するために使用するかどうかはわかりません。ViewModelでこの列挙型を使用できるかどうかです。私がMVVMに違反しないならば。
EDIT: 列挙:
public enum Progress
{
InProgress,
Success,
Failed,
Nothing
}
VM:
private Progress _webServiceProgress;
public Progress WebServiceProgress
{
get { return _webServiceProgress; }
set { Set(ref _webServiceProgress, value); }
}
このVMのプロパティ/私は私のUserControlプロパティ(DP)に結合すると、列挙型の値に応じて、私はプログレスバーが表示されます画像。あなたがコントロールのVisibility
プロパティを設定し、トリガーとControlTemplate
を定義することができ
、それだけでデータ型です。 – Maxim
ビューモデルで列挙型を宣言します。 UserControl内のVMから列挙宣言を使用したくない場合は、UserControlライブラリに同じ型を宣言し、一方の列挙型から他方の列挙型に変換するバインディングコンバータを記述します。 – Clemens
@Clemens VMでenumを宣言すると、usercontrolでVMを参照する必要があります。 – JuP