私はWPFカスタムコントロールをビルドしています。私はResponseTimerを呼び出しています。これは基本的にDispatcherTimerとProgressBarで構成されています。 TimeSpanであるTimeElapsedおよびTimeoutPeriodというプロパティがあります。私のプログラムのユーザーインターフェイスでは、イベントは定期的に発生します。ユーザーがイベントに再開できる期間があります。インターバルが終了すると、プログラムはそれ自身でアクションを実行します。WPFカスタムコントロールのトリガーをビルドする方法
このコントロールは2か所で使いたいです。 1つはListBoxに表示されるアイテムになり、もう1つはウィンドウの下部に表示されます。リストボックス内のコーピングについては、期間が終了したときにProgressBarを非表示にしたいが、ウィンドウの下部にコントロールを隠したくはない。
この機能を使用するには、HideIfExpiredとIsExpiredという2つのbool DependcyPropertiesを定義しました。 HideIfExpiredがtrueの場合、IsExpiredがtrueの場合、ProgressBarは非表示になります。シンプル。
Generic.xamlのコントロールのデフォルトのコンテンツテンプレートでトリガーを使用したいとします。私はどのようにトリガを書くか分からない。ここで
コントロールのXAMLです:
<Style TargetType="{x:Type local:ResponseTimer}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ResponseTimer}">
<StackPanel Visibility="{TemplateBinding Visibility}">
<ProgressBar Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
FlowDirection="{TemplateBinding FlowDirection}"
Foreground="{TemplateBinding Foreground}"
Height="{TemplateBinding Height}"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
IsEnabled="{TemplateBinding IsEnabled}"
IsTabStop="False"
Margin="{TemplateBinding Margin}"
MaxHeight="{TemplateBinding MaxHeight}"
MaxWidth="{TemplateBinding MaxWidth}"
MinHeight="{TemplateBinding MinHeight}"
Minimum="0"
MinWidth="{TemplateBinding MinWidth}"
Name="PART_ProgressBar"
Opacity="{TemplateBinding Opacity}"
OpacityMask="{TemplateBinding OpacityMask}"
Orientation="{TemplateBinding Orientation}"
Padding="{TemplateBinding Padding}"
Panel.ZIndex="{TemplateBinding Panel.ZIndex}"
RenderSize="{TemplateBinding RenderSize}"
RenderTransform="{TemplateBinding RenderTransform}"
RenderTransformOrigin="{TemplateBinding RenderTransformOrigin}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
Style="{TemplateBinding Style}"
Tag="{TemplateBinding Tag}"
ToolTip="{TemplateBinding ToolTip}"
UseLayoutRounding="{TemplateBinding UseLayoutRounding}"
VerticalAlignment="{TemplateBinding VerticalAlignment}"
Visibility="{Binding Path=IsExpired, Converter={StaticResource InvertedBoolToVisibility}, RelativeSource={RelativeSource TemplatedParent}}"
Width="{TemplateBinding Width}" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
私はStackPanelのは、そこにある任意のより多くの理由、それはコントロールの以前のバージョンの名残かもしれわかりません。私はそれを境界線に置き換えて、全体を隠す方法を持っているかもしれません。
とにかく、トリガーを書き込むにはどうすればよいですか?
ありがとうございます!私はそれを朝に試して、それがどのように動作するか見てみましょう。 –
トリガーはどうやって行ったのですか?それは動作しましたか? –
動作しませんでした。両方ともDependencyPropertiesであり、うまくいくはずですが、そうではありませんでした。私はコードビハインドで何かを実装しました。とにかくありがとう。興味深いもの: –