Commit 780f3ea9 by liulongfei

修复检测按钮异常显示问题

parent d45f1472
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using VIZ.H2V.Domain;
using VIZ.H2V.Storage;
namespace VIZ.H2V.Module.Resource
{
/// <summary>
/// NDI视图属性 -> 面板是否可用转化器
/// 参数1 -- 当前视图状态
/// 参数2 -- 当前算法模式
/// 参数2 -- 当前算法类型
/// </summary>
public class NDIViewProperty2BoolConverter : IMultiValueConverter
{
#region ViewStatusListString -- 状态列表字符串
private string viewStatusListString;
/// <summary>
/// 状态列表字符串
/// </summary>
public string ViewStatusListString
{
get { return viewStatusListString; }
set
{
viewStatusListString = value;
string[] items = value.Split(',');
List<NDIViewStatus> list = new List<NDIViewStatus>();
foreach (string item in items)
{
list.Add((NDIViewStatus)Enum.Parse(typeof(NDIViewStatus), item.Trim()));
}
this.viewStatusList = list;
}
}
/// <summary>
/// 视图状态列表
/// </summary>
private List<NDIViewStatus> viewStatusList;
#endregion
#region StrategyTypeListString -- 算法列表字符串
private string strategyTypeListString;
/// <summary>
/// 算法列表字符串
/// </summary>
public string StrategyTypeListString
{
get { return strategyTypeListString; }
set
{
strategyTypeListString = value;
string[] items = value.Split(',');
List<AlgorithmStrategyType> list = new List<AlgorithmStrategyType>();
foreach (string item in items)
{
list.Add((AlgorithmStrategyType)Enum.Parse(typeof(AlgorithmStrategyType), item.Trim()));
}
this.strategyTypeList = list;
}
}
/// <summary>
/// 算法列表
/// </summary>
private List<AlgorithmStrategyType> strategyTypeList;
#endregion
#region StrategyModeListString -- 算法模式列表字符串
private string strategyModeListString;
/// <summary>
/// 算法模式列表字符串
/// </summary>
public string StrategyModeListString
{
get { return strategyModeListString; }
set
{
string[] items = value.Split(',');
List<AlgorithmStrategyMode> list = new List<AlgorithmStrategyMode>();
foreach (string item in items)
{
list.Add((AlgorithmStrategyMode)Enum.Parse(typeof(AlgorithmStrategyMode), item.Trim()));
}
this.strategyModeList = list;
}
}
/// <summary>
/// 算法模式列表
/// </summary>
private List<AlgorithmStrategyMode> strategyModeList;
#endregion
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values == null || values.Length < 3 ||
!(values[0] is NDIViewStatus) ||
!(values[1] is AlgorithmStrategyMode) ||
!(values[2] is AlgorithmStrategyType))
return false;
NDIViewStatus status = (NDIViewStatus)values[0];
AlgorithmStrategyMode mode = (AlgorithmStrategyMode)values[1];
AlgorithmStrategyType type = (AlgorithmStrategyType)values[2];
return this.viewStatusList.Contains(status) &&
this.strategyModeList.Contains(mode) &&
this.strategyTypeList.Contains(type);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using VIZ.H2V.Domain;
using VIZ.H2V.Storage;
using System.Windows;
namespace VIZ.H2V.Module.Resource
{
/// <summary>
/// NDI视图属性 -> 面板可见性转化器
/// 参数1 -- 当前视图状态
/// 参数2 -- 当前算法模式
/// 参数2 -- 当前算法类型
/// </summary>
public class NDIViewProperty2VisibilityConverter : IMultiValueConverter
{
#region ViewStatusListString -- 状态列表字符串
private string viewStatusListString;
/// <summary>
/// 状态列表字符串
/// </summary>
public string ViewStatusListString
{
get { return viewStatusListString; }
set
{
viewStatusListString = value;
string[] items = value.Split(',');
List<NDIViewStatus> list = new List<NDIViewStatus>();
foreach (string item in items)
{
list.Add((NDIViewStatus)Enum.Parse(typeof(NDIViewStatus), item.Trim()));
}
this.viewStatusList = list;
}
}
/// <summary>
/// 视图状态列表
/// </summary>
private List<NDIViewStatus> viewStatusList;
#endregion
#region StrategyTypeListString -- 算法列表字符串
private string strategyTypeListString;
/// <summary>
/// 算法列表字符串
/// </summary>
public string StrategyTypeListString
{
get { return strategyTypeListString; }
set
{
strategyTypeListString = value;
string[] items = value.Split(',');
List<AlgorithmStrategyType> list = new List<AlgorithmStrategyType>();
foreach (string item in items)
{
list.Add((AlgorithmStrategyType)Enum.Parse(typeof(AlgorithmStrategyType), item.Trim()));
}
this.strategyTypeList = list;
}
}
/// <summary>
/// 算法列表
/// </summary>
private List<AlgorithmStrategyType> strategyTypeList;
#endregion
#region StrategyModeListString -- 算法模式列表字符串
private string strategyModeListString;
/// <summary>
/// 算法模式列表字符串
/// </summary>
public string StrategyModeListString
{
get { return strategyModeListString; }
set
{
string[] items = value.Split(',');
List<AlgorithmStrategyMode> list = new List<AlgorithmStrategyMode>();
foreach (string item in items)
{
list.Add((AlgorithmStrategyMode)Enum.Parse(typeof(AlgorithmStrategyMode), item.Trim()));
}
this.strategyModeList = list;
}
}
/// <summary>
/// 算法模式列表
/// </summary>
private List<AlgorithmStrategyMode> strategyModeList;
#endregion
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values == null || values.Length < 3 ||
!(values[0] is NDIViewStatus) ||
!(values[1] is AlgorithmStrategyMode) ||
!(values[2] is AlgorithmStrategyType))
return false;
NDIViewStatus status = (NDIViewStatus)values[0];
AlgorithmStrategyMode mode = (AlgorithmStrategyMode)values[1];
AlgorithmStrategyType type = (AlgorithmStrategyType)values[2];
return this.viewStatusList.Contains(status) &&
this.strategyModeList.Contains(mode) &&
this.strategyTypeList.Contains(type)
? Visibility.Visible : Visibility.Collapsed;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using VIZ.H2V.Domain;
using VIZ.H2V.Storage;
namespace VIZ.H2V.Module.Resource
{
/// <summary>
/// NDI视图状态 -> 面板是否可用转化器
/// </summary>
public class NDIViewStatusAndMode2BoolConverter : IMultiValueConverter
{
#region TrueListString -- True的值
private string trueListStringmyVar;
/// <summary>
/// 为True的值
/// </summary>
public string TrueListString
{
get { return trueListStringmyVar; }
set
{
trueListStringmyVar = value;
string[] items = value.Split(',');
List<NDIViewStatus> list = new List<NDIViewStatus>();
foreach (string item in items)
{
NDIViewStatus status = (NDIViewStatus)Enum.Parse(typeof(NDIViewStatus), item.Trim());
list.Add(status);
}
this.trueList = list;
}
}
private List<NDIViewStatus> trueList = new List<NDIViewStatus>();
#endregion
#region Mode -- 算法模式
/// <summary>
/// 算法模式
/// </summary>
public AlgorithmStrategyMode Mode { get; set; }
#endregion
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values == null || values.Length < 2 || !(values[0] is AlgorithmStrategyMode) || !(values[1] is NDIViewStatus))
return false;
AlgorithmStrategyMode mode = (AlgorithmStrategyMode)values[0];
NDIViewStatus status = (NDIViewStatus)values[1];
return this.Mode == mode && this.trueList.Contains(status);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using VIZ.H2V.Domain;
using VIZ.H2V.Storage;
using System.Windows;
namespace VIZ.H2V.Module.Resource
{
/// <summary>
/// NDI视图状态 -> 面板可见性转化器
/// </summary>
public class NDIViewStatusAndMode2VisibilityConverter : IMultiValueConverter
{
#region TrueVisibility -- 为真时的返回值
/// <summary>
/// 为真时的返回值
/// </summary>
public Visibility TrueVisibility { get; set; } = Visibility.Visible;
#endregion
#region FalseVisibility -- 为假时的返回值
/// <summary>
/// 为假时的返回值
/// </summary>
public Visibility FalseVisibility { get; set; } = Visibility.Hidden;
#endregion
#region TrueListString -- True的值
private string trueListStringmyVar;
/// <summary>
/// 为True的值
/// </summary>
public string TrueListString
{
get { return trueListStringmyVar; }
set
{
trueListStringmyVar = value;
string[] items = value.Split(',');
List<NDIViewStatus> list = new List<NDIViewStatus>();
foreach (string item in items)
{
NDIViewStatus status = (NDIViewStatus)Enum.Parse(typeof(NDIViewStatus), item.Trim());
list.Add(status);
}
this.trueList = list;
}
}
private List<NDIViewStatus> trueList = new List<NDIViewStatus>();
#endregion
#region Mode -- 算法模式
/// <summary>
/// 算法模式
/// </summary>
public AlgorithmStrategyMode Mode { get; set; }
#endregion
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values == null || values.Length < 2 || !(values[0] is AlgorithmStrategyMode) || !(values[1] is NDIViewStatus))
return false;
AlgorithmStrategyMode mode = (AlgorithmStrategyMode)values[0];
NDIViewStatus status = (NDIViewStatus)values[1];
return (this.Mode == mode && this.trueList.Contains(status)) ? this.TrueVisibility : this.FalseVisibility;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
\ No newline at end of file
......@@ -104,8 +104,8 @@
</Page>
</ItemGroup>
<ItemGroup>
<Compile Include="Converter\NDIViewStatusAndMode2VisibilityConverter.cs" />
<Compile Include="Converter\NDIViewStatusAndMode2BoolConverter.cs" />
<Compile Include="Converter\NDIViewProperty2VisibilityConverter.cs" />
<Compile Include="Converter\NDIViewProperty2BoolConverter.cs" />
<Compile Include="Converter\NDIViewStatus2BoolConverter.cs" />
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
......
......@@ -46,9 +46,9 @@
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<local:NDIView NDIKey="{x:Static Member=domain:NDIViewKeys.CAM_1}" Grid.Row="0" Grid.Column="0" Margin="30"></local:NDIView>
<local:NDIView NDIKey="{x:Static Member=domain:NDIViewKeys.CAM_2}" Grid.Row="0" Grid.Column="1" Margin="30"></local:NDIView>
<!--<local:NDIView NDIKey="{x:Static Member=domain:NDIViewKeys.CAM_2}" Grid.Row="0" Grid.Column="1" Margin="30"></local:NDIView>
<local:NDIView NDIKey="{x:Static Member=domain:NDIViewKeys.CAM_3}" Grid.Row="1" Grid.Column="0" Margin="30"></local:NDIView>
<local:NDIView NDIKey="{x:Static Member=domain:NDIViewKeys.CAM_4}" Grid.Row="1" Grid.Column="1" Margin="30"></local:NDIView>
<local:NDIView NDIKey="{x:Static Member=domain:NDIViewKeys.CAM_4}" Grid.Row="1" Grid.Column="1" Margin="30"></local:NDIView>-->
</Grid>
<!-- 底部 -->
<Border Grid.Row="2" Background="#ff12202d">
......
......@@ -24,8 +24,16 @@
<fcore:Bool2BoolConverter x:Key="Bool2BoolConverter"></fcore:Bool2BoolConverter>
<resource:NDIViewStatus2BoolConverter x:Key="NDIViewStatus2IsEnabledConverter" TrueListString="Detect,CropRoi"></resource:NDIViewStatus2BoolConverter>
<resource:NDIViewStatus2BoolConverter x:Key="NDIViewStatus2IsEnabledConverter_SettingButton" TrueListString="Stop,Detect,CropRoi"></resource:NDIViewStatus2BoolConverter>
<resource:NDIViewStatusAndMode2VisibilityConverter x:Key="NDIViewStatusAndMode2VisibilityConverter_DetectButton" TrueListString="Detect,CropRoi" Mode="auto_mode"></resource:NDIViewStatusAndMode2VisibilityConverter>
<resource:NDIViewStatusAndMode2BoolConverter x:Key="NDIViewStatusAndMode2BoolConverter_DetectButton" TrueListString="CropRoi" Mode="auto_mode"></resource:NDIViewStatusAndMode2BoolConverter>
<resource:NDIViewProperty2VisibilityConverter x:Key="NDIViewProperty2VisibilityConverter_DetectButton"
ViewStatusListString="Detect,CropRoi"
StrategyModeListString="auto_mode"
StrategyTypeListString="Single">
</resource:NDIViewProperty2VisibilityConverter>
<resource:NDIViewProperty2BoolConverter x:Key="NDIViewProperty2BoolConverter_DetectButton"
ViewStatusListString="CropRoi"
StrategyModeListString="auto_mode"
StrategyTypeListString="Single">
</resource:NDIViewProperty2BoolConverter>
</ResourceDictionary>
</UserControl.Resources>
......@@ -100,15 +108,17 @@
Height="40" Width="120" HorizontalAlignment="Right" Margin="0,0,10,0"
Command="{Binding Path=DetectCommand}">
<Button.IsEnabled>
<MultiBinding Converter="{StaticResource NDIViewStatusAndMode2BoolConverter_DetectButton}">
<Binding Path="StrategyMode"></Binding>
<MultiBinding Converter="{StaticResource NDIViewProperty2BoolConverter_DetectButton}">
<Binding Path="ViewStatus"></Binding>
<Binding Path="StrategyMode"></Binding>
<Binding Path="StrategyType"></Binding>
</MultiBinding>
</Button.IsEnabled>
<Button.Visibility>
<MultiBinding Converter="{StaticResource NDIViewStatusAndMode2VisibilityConverter_DetectButton}">
<Binding Path="StrategyMode"></Binding>
<MultiBinding Converter="{StaticResource NDIViewProperty2VisibilityConverter_DetectButton}">
<Binding Path="ViewStatus"></Binding>
<Binding Path="StrategyMode"></Binding>
<Binding Path="StrategyType"></Binding>
</MultiBinding>
</Button.Visibility>
</Button>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment