Dreamine.UI.Wpf
1.0.1
Dreamine.UI.Wpf 사용자 인터페이스 기능과 구성 요소를 제공합니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
BoolToVisibilityConverter.cs
이 파일의 문서화 페이지로 가기
1
using
System;
2
using
System.Globalization;
3
using
System.Linq;
4
using
System.Windows;
5
using
System.Windows.Data;
6
7
namespace
Dreamine.UI.Wpf.Converters
8
{
25
public
sealed
class
BoolToVisibilityConverter
: IValueConverter
26
{
35
public
bool
Inverse
{
get
;
set
; } =
false
;
36
45
public
bool
UseHidden
{
get
;
set
; } =
false
;
46
95
public
object
Convert
(
object
value, Type targetType,
object
parameter, CultureInfo culture)
96
{
97
// \brief Read options from instance properties first.
98
bool
inverse =
Inverse
;
99
bool
useHidden =
UseHidden
;
100
101
// \brief Allow ConverterParameter to override / augment options.
102
ApplyOptionsFromParameter
(parameter, ref inverse, ref useHidden);
103
104
// \brief Normalize input to bool.
105
bool
val =
ToBoolSafe
(value);
106
107
if
(inverse)
108
val = !val;
109
110
return
val
111
? Visibility.Visible
112
: (useHidden ? Visibility.Hidden : Visibility.Collapsed);
113
}
114
163
public
object
ConvertBack
(
object
value, Type targetType,
object
parameter, CultureInfo culture)
164
{
165
bool
inverse =
Inverse
;
166
bool
useHidden =
UseHidden
;
// \brief Not used directly in ConvertBack, but parsed for symmetry.
167
ApplyOptionsFromParameter
(parameter, ref inverse, ref useHidden);
168
169
Visibility vis = value is Visibility v ? v : Visibility.Collapsed;
170
171
bool
result = (vis == Visibility.Visible);
172
return
inverse ? !result : result;
173
}
174
199
private
static
bool
ToBoolSafe
(
object
? value)
200
{
201
if
(value ==
null
)
202
return
false
;
203
204
// \brief Direct bool (covers boxed bool)
205
if
(value is
bool
b)
206
return
b;
207
208
// \brief Nullable<bool> comes in boxed as bool when HasValue == true,
209
// so no separate "bool?" pattern is required.
210
// (This avoids CS8116 entirely.)
211
212
// \brief String handling
213
if
(value is
string
s)
214
{
215
if
(
bool
.TryParse(s, out
bool
parsedBool))
216
return
parsedBool;
217
218
if
(
int
.TryParse(s, NumberStyles.Integer, CultureInfo.InvariantCulture, out
int
parsedInt))
219
return
parsedInt != 0;
220
}
221
222
// \brief Numeric handling
223
if
(value is
byte
by)
return
by != 0;
224
if
(value is
short
sh)
return
sh != 0;
225
if
(value is
int
it)
return
it != 0;
226
if
(value is
long
lo)
return
lo != 0;
227
228
// \brief Last-resort conversion
229
try
230
{
231
return
System.Convert.ToBoolean(value, CultureInfo.InvariantCulture);
232
}
233
catch
234
{
235
return
false
;
236
}
237
}
238
239
272
private
static
void
ApplyOptionsFromParameter
(
object
parameter, ref
bool
inverse, ref
bool
useHidden)
273
{
274
if
(parameter ==
null
)
275
return
;
276
277
// \brief bool parameter: treat as inverse override.
278
if
(parameter is
bool
b)
279
{
280
inverse = b;
281
return
;
282
}
283
284
// \brief Visibility parameter: Hidden implies UseHidden.
285
if
(parameter is Visibility vis)
286
{
287
useHidden = (vis == Visibility.Hidden);
288
return
;
289
}
290
291
// \brief string parameter: parse tokens.
292
if
(parameter is
string
s)
293
{
294
var tokens = s
295
.Split(
new
[] {
','
,
';'
,
'|'
,
' '
}, StringSplitOptions.RemoveEmptyEntries)
296
.Select(t => t.Trim())
297
.Where(t => !
string
.IsNullOrWhiteSpace(t))
298
.ToArray();
299
300
foreach
(var token
in
tokens)
301
{
302
if
(token.Equals(
"Inverse"
, StringComparison.OrdinalIgnoreCase))
303
inverse =
true
;
304
305
if
(token.Equals(
"Hidden"
, StringComparison.OrdinalIgnoreCase) ||
306
token.Equals(
"UseHidden"
, StringComparison.OrdinalIgnoreCase))
307
useHidden =
true
;
308
309
if
(token.Equals(
"Collapsed"
, StringComparison.OrdinalIgnoreCase))
310
useHidden =
false
;
311
}
312
}
313
}
314
}
315
}
Dreamine.UI.Wpf.Converters
Definition
AddOffsetConverter.cs:10
Dreamine.UI.Wpf.Converters.BoolToVisibilityConverter
Definition
BoolToVisibilityConverter.cs:26
Dreamine.UI.Wpf.Converters.BoolToVisibilityConverter.UseHidden
bool UseHidden
Definition
BoolToVisibilityConverter.cs:45
Dreamine.UI.Wpf.Converters.BoolToVisibilityConverter.ApplyOptionsFromParameter
static void ApplyOptionsFromParameter(object parameter, ref bool inverse, ref bool useHidden)
Definition
BoolToVisibilityConverter.cs:272
Dreamine.UI.Wpf.Converters.BoolToVisibilityConverter.ConvertBack
object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
Definition
BoolToVisibilityConverter.cs:163
Dreamine.UI.Wpf.Converters.BoolToVisibilityConverter.ToBoolSafe
static bool ToBoolSafe(object? value)
Definition
BoolToVisibilityConverter.cs:199
Dreamine.UI.Wpf.Converters.BoolToVisibilityConverter.Inverse
bool Inverse
Definition
BoolToVisibilityConverter.cs:35
Dreamine.UI.Wpf.Converters.BoolToVisibilityConverter.Convert
object Convert(object value, Type targetType, object parameter, CultureInfo culture)
Definition
BoolToVisibilityConverter.cs:95
Converters
BoolToVisibilityConverter.cs
다음에 의해 생성됨 :
1.17.0