text line alignments on different window sizes
I'm working on a login window that has to support multiple resolutions.
within that window there's a long line of text in different colors.
<TextBlock
Style="{StaticResource TextStyle}"
TextWrapping="Wrap" HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center">
<Run
Text="{Binding MsgA}"
/>
<Run
Foreground="#FFFFFF"
FontFamily="{StaticResource CentralSansBook}"
Text="{Binding MsgB}"
/>
</TextBlock>
with this code I get this:
on Low resolutions, since I have almost half the width, I'll give up on pretty formatting and just want it to fit, so it will look like this
This is message A.This is
message B
on HIGH resolutions I want it to look like this
This is message A.
This is message B
I cant figure out how to support both behaviors.
wpf xaml
add a comment |
I'm working on a login window that has to support multiple resolutions.
within that window there's a long line of text in different colors.
<TextBlock
Style="{StaticResource TextStyle}"
TextWrapping="Wrap" HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center">
<Run
Text="{Binding MsgA}"
/>
<Run
Foreground="#FFFFFF"
FontFamily="{StaticResource CentralSansBook}"
Text="{Binding MsgB}"
/>
</TextBlock>
with this code I get this:
on Low resolutions, since I have almost half the width, I'll give up on pretty formatting and just want it to fit, so it will look like this
This is message A.This is
message B
on HIGH resolutions I want it to look like this
This is message A.
This is message B
I cant figure out how to support both behaviors.
wpf xaml
If i were you, i would write a trigger (inside the your textblock) for Window resolution (whick is static, so you can refer (with x:static) to it inside binding) which will change the TextWrapping value.
– Péter Hidvégi
Nov 26 '18 at 8:38
that sounds like it might work, any chance you got a reference link?
– Danw25
Nov 26 '18 at 10:38
add a comment |
I'm working on a login window that has to support multiple resolutions.
within that window there's a long line of text in different colors.
<TextBlock
Style="{StaticResource TextStyle}"
TextWrapping="Wrap" HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center">
<Run
Text="{Binding MsgA}"
/>
<Run
Foreground="#FFFFFF"
FontFamily="{StaticResource CentralSansBook}"
Text="{Binding MsgB}"
/>
</TextBlock>
with this code I get this:
on Low resolutions, since I have almost half the width, I'll give up on pretty formatting and just want it to fit, so it will look like this
This is message A.This is
message B
on HIGH resolutions I want it to look like this
This is message A.
This is message B
I cant figure out how to support both behaviors.
wpf xaml
I'm working on a login window that has to support multiple resolutions.
within that window there's a long line of text in different colors.
<TextBlock
Style="{StaticResource TextStyle}"
TextWrapping="Wrap" HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center">
<Run
Text="{Binding MsgA}"
/>
<Run
Foreground="#FFFFFF"
FontFamily="{StaticResource CentralSansBook}"
Text="{Binding MsgB}"
/>
</TextBlock>
with this code I get this:
on Low resolutions, since I have almost half the width, I'll give up on pretty formatting and just want it to fit, so it will look like this
This is message A.This is
message B
on HIGH resolutions I want it to look like this
This is message A.
This is message B
I cant figure out how to support both behaviors.
wpf xaml
wpf xaml
edited Nov 26 '18 at 7:55
Micha Wiedenmann
10.5k1364106
10.5k1364106
asked Nov 26 '18 at 7:52
Danw25Danw25
808
808
If i were you, i would write a trigger (inside the your textblock) for Window resolution (whick is static, so you can refer (with x:static) to it inside binding) which will change the TextWrapping value.
– Péter Hidvégi
Nov 26 '18 at 8:38
that sounds like it might work, any chance you got a reference link?
– Danw25
Nov 26 '18 at 10:38
add a comment |
If i were you, i would write a trigger (inside the your textblock) for Window resolution (whick is static, so you can refer (with x:static) to it inside binding) which will change the TextWrapping value.
– Péter Hidvégi
Nov 26 '18 at 8:38
that sounds like it might work, any chance you got a reference link?
– Danw25
Nov 26 '18 at 10:38
If i were you, i would write a trigger (inside the your textblock) for Window resolution (whick is static, so you can refer (with x:static) to it inside binding) which will change the TextWrapping value.
– Péter Hidvégi
Nov 26 '18 at 8:38
If i were you, i would write a trigger (inside the your textblock) for Window resolution (whick is static, so you can refer (with x:static) to it inside binding) which will change the TextWrapping value.
– Péter Hidvégi
Nov 26 '18 at 8:38
that sounds like it might work, any chance you got a reference link?
– Danw25
Nov 26 '18 at 10:38
that sounds like it might work, any chance you got a reference link?
– Danw25
Nov 26 '18 at 10:38
add a comment |
1 Answer
1
active
oldest
votes
As I can see all you need is just paste a line break before second message for high resolution. So I would do it in View layer with value converter:
public class NewLineInsCnv : IValueConverter
{
public bool InsertNewLine { get; set; } = IsHighResolution();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (InsertNewLine && value is string st)
{
return Environment.NewLine + st;
}
return value;
}
public object ConvertBack(object value, Type targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException("One way only conversion");
}
private static bool IsHighResolution()
{
return true;//Check
}
}
<TextBlock
Style="{StaticResource TextStyle}"
TextWrapping="Wrap" HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center">
<TextBlock.Resources>
<local:NewLineInsCnv x:Key="insertNewLineCnv"/>
</TextBlock.Resources>
<Run
Text="{Binding MsgA}"
/>
<Run
Foreground="#FFFFFF"
FontFamily="{StaticResource CentralSansBook}"
Text="{Binding MsgB, Converter={StaticResource insertNewLineCnv}}"
/>
</TextBlock>
If necessary you could make InsertNewLine
a dependency property.
add a comment |
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53476742%2ftext-line-alignments-on-different-window-sizes%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
As I can see all you need is just paste a line break before second message for high resolution. So I would do it in View layer with value converter:
public class NewLineInsCnv : IValueConverter
{
public bool InsertNewLine { get; set; } = IsHighResolution();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (InsertNewLine && value is string st)
{
return Environment.NewLine + st;
}
return value;
}
public object ConvertBack(object value, Type targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException("One way only conversion");
}
private static bool IsHighResolution()
{
return true;//Check
}
}
<TextBlock
Style="{StaticResource TextStyle}"
TextWrapping="Wrap" HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center">
<TextBlock.Resources>
<local:NewLineInsCnv x:Key="insertNewLineCnv"/>
</TextBlock.Resources>
<Run
Text="{Binding MsgA}"
/>
<Run
Foreground="#FFFFFF"
FontFamily="{StaticResource CentralSansBook}"
Text="{Binding MsgB, Converter={StaticResource insertNewLineCnv}}"
/>
</TextBlock>
If necessary you could make InsertNewLine
a dependency property.
add a comment |
As I can see all you need is just paste a line break before second message for high resolution. So I would do it in View layer with value converter:
public class NewLineInsCnv : IValueConverter
{
public bool InsertNewLine { get; set; } = IsHighResolution();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (InsertNewLine && value is string st)
{
return Environment.NewLine + st;
}
return value;
}
public object ConvertBack(object value, Type targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException("One way only conversion");
}
private static bool IsHighResolution()
{
return true;//Check
}
}
<TextBlock
Style="{StaticResource TextStyle}"
TextWrapping="Wrap" HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center">
<TextBlock.Resources>
<local:NewLineInsCnv x:Key="insertNewLineCnv"/>
</TextBlock.Resources>
<Run
Text="{Binding MsgA}"
/>
<Run
Foreground="#FFFFFF"
FontFamily="{StaticResource CentralSansBook}"
Text="{Binding MsgB, Converter={StaticResource insertNewLineCnv}}"
/>
</TextBlock>
If necessary you could make InsertNewLine
a dependency property.
add a comment |
As I can see all you need is just paste a line break before second message for high resolution. So I would do it in View layer with value converter:
public class NewLineInsCnv : IValueConverter
{
public bool InsertNewLine { get; set; } = IsHighResolution();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (InsertNewLine && value is string st)
{
return Environment.NewLine + st;
}
return value;
}
public object ConvertBack(object value, Type targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException("One way only conversion");
}
private static bool IsHighResolution()
{
return true;//Check
}
}
<TextBlock
Style="{StaticResource TextStyle}"
TextWrapping="Wrap" HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center">
<TextBlock.Resources>
<local:NewLineInsCnv x:Key="insertNewLineCnv"/>
</TextBlock.Resources>
<Run
Text="{Binding MsgA}"
/>
<Run
Foreground="#FFFFFF"
FontFamily="{StaticResource CentralSansBook}"
Text="{Binding MsgB, Converter={StaticResource insertNewLineCnv}}"
/>
</TextBlock>
If necessary you could make InsertNewLine
a dependency property.
As I can see all you need is just paste a line break before second message for high resolution. So I would do it in View layer with value converter:
public class NewLineInsCnv : IValueConverter
{
public bool InsertNewLine { get; set; } = IsHighResolution();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (InsertNewLine && value is string st)
{
return Environment.NewLine + st;
}
return value;
}
public object ConvertBack(object value, Type targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException("One way only conversion");
}
private static bool IsHighResolution()
{
return true;//Check
}
}
<TextBlock
Style="{StaticResource TextStyle}"
TextWrapping="Wrap" HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center">
<TextBlock.Resources>
<local:NewLineInsCnv x:Key="insertNewLineCnv"/>
</TextBlock.Resources>
<Run
Text="{Binding MsgA}"
/>
<Run
Foreground="#FFFFFF"
FontFamily="{StaticResource CentralSansBook}"
Text="{Binding MsgB, Converter={StaticResource insertNewLineCnv}}"
/>
</TextBlock>
If necessary you could make InsertNewLine
a dependency property.
edited Nov 26 '18 at 11:28
answered Nov 26 '18 at 11:09
RekshinoRekshino
3,09021034
3,09021034
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53476742%2ftext-line-alignments-on-different-window-sizes%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
If i were you, i would write a trigger (inside the your textblock) for Window resolution (whick is static, so you can refer (with x:static) to it inside binding) which will change the TextWrapping value.
– Péter Hidvégi
Nov 26 '18 at 8:38
that sounds like it might work, any chance you got a reference link?
– Danw25
Nov 26 '18 at 10:38