Trouble Inputting Doubles in View Due To Not Using Strings?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I have a View in which I should be able to input doubles. The thing is, I can only input whole numbers such as "100" but not "100.4". All my background calculations run on doubles though. Is there an easy fix?
View:
<TextBox Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center" Grid.RowSpan="2"
Text="{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=DelayModel.DelayTime, UpdateSourceTrigger=PropertyChanged}"/>
Model:
private double _delayTime;
public double DelayTime
{
get
{
return _delayTime;
}
set
{
if (value != _delayTime)
{
_delayTime = value; NotifyPropertyChanged();
}
}
}
Another Model which uses delayTime
:
public double TotalAxisTime
{
get
{
double positioningTime = 0.0;
double delayTime = 0.0;
foreach (var block in BlockList)
{
if (block is PositioningModel)
{
positioningTime = positioningTime + ((PositioningModel)block).PositioningTime;
}
if (block is DelayModel)
{
delayTime = delayTime + ((DelayModel)block).DelayTime;
}
}
return (positioningTime + delayTime);
}
}
(PositioningTime is another double value which I probably need to convert to strings.
I'm struggling to implement the Convert.ToString()-Method. Is this the right approach? Should I use dedicated Converters in XAML? Something like StringToDoubleConverter with IValueConverter?
Any advice would help. Thanks in advance.
c# xaml types converters
add a comment |
I have a View in which I should be able to input doubles. The thing is, I can only input whole numbers such as "100" but not "100.4". All my background calculations run on doubles though. Is there an easy fix?
View:
<TextBox Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center" Grid.RowSpan="2"
Text="{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=DelayModel.DelayTime, UpdateSourceTrigger=PropertyChanged}"/>
Model:
private double _delayTime;
public double DelayTime
{
get
{
return _delayTime;
}
set
{
if (value != _delayTime)
{
_delayTime = value; NotifyPropertyChanged();
}
}
}
Another Model which uses delayTime
:
public double TotalAxisTime
{
get
{
double positioningTime = 0.0;
double delayTime = 0.0;
foreach (var block in BlockList)
{
if (block is PositioningModel)
{
positioningTime = positioningTime + ((PositioningModel)block).PositioningTime;
}
if (block is DelayModel)
{
delayTime = delayTime + ((DelayModel)block).DelayTime;
}
}
return (positioningTime + delayTime);
}
}
(PositioningTime is another double value which I probably need to convert to strings.
I'm struggling to implement the Convert.ToString()-Method. Is this the right approach? Should I use dedicated Converters in XAML? Something like StringToDoubleConverter with IValueConverter?
Any advice would help. Thanks in advance.
c# xaml types converters
2
Your trouble lies in the binding from double to string: whenever you edit the text in the textbox, the double value is updated and the update is reflected back the textbox. This works fine when you enter digits, say change "123" to "1234". But suppose that you then add a decimal point: "1234.". The value will just be treated as 1234 in the model and fail to pass the 'if (value != _delayTime)' check, thereby not being updated. The textbox will just keep showing the value 1234 due to the binding. I think that using a converter is your only reasonable choice.
– JonyVol
Jan 3 at 8:52
add a comment |
I have a View in which I should be able to input doubles. The thing is, I can only input whole numbers such as "100" but not "100.4". All my background calculations run on doubles though. Is there an easy fix?
View:
<TextBox Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center" Grid.RowSpan="2"
Text="{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=DelayModel.DelayTime, UpdateSourceTrigger=PropertyChanged}"/>
Model:
private double _delayTime;
public double DelayTime
{
get
{
return _delayTime;
}
set
{
if (value != _delayTime)
{
_delayTime = value; NotifyPropertyChanged();
}
}
}
Another Model which uses delayTime
:
public double TotalAxisTime
{
get
{
double positioningTime = 0.0;
double delayTime = 0.0;
foreach (var block in BlockList)
{
if (block is PositioningModel)
{
positioningTime = positioningTime + ((PositioningModel)block).PositioningTime;
}
if (block is DelayModel)
{
delayTime = delayTime + ((DelayModel)block).DelayTime;
}
}
return (positioningTime + delayTime);
}
}
(PositioningTime is another double value which I probably need to convert to strings.
I'm struggling to implement the Convert.ToString()-Method. Is this the right approach? Should I use dedicated Converters in XAML? Something like StringToDoubleConverter with IValueConverter?
Any advice would help. Thanks in advance.
c# xaml types converters
I have a View in which I should be able to input doubles. The thing is, I can only input whole numbers such as "100" but not "100.4". All my background calculations run on doubles though. Is there an easy fix?
View:
<TextBox Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center" Grid.RowSpan="2"
Text="{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=DelayModel.DelayTime, UpdateSourceTrigger=PropertyChanged}"/>
Model:
private double _delayTime;
public double DelayTime
{
get
{
return _delayTime;
}
set
{
if (value != _delayTime)
{
_delayTime = value; NotifyPropertyChanged();
}
}
}
Another Model which uses delayTime
:
public double TotalAxisTime
{
get
{
double positioningTime = 0.0;
double delayTime = 0.0;
foreach (var block in BlockList)
{
if (block is PositioningModel)
{
positioningTime = positioningTime + ((PositioningModel)block).PositioningTime;
}
if (block is DelayModel)
{
delayTime = delayTime + ((DelayModel)block).DelayTime;
}
}
return (positioningTime + delayTime);
}
}
(PositioningTime is another double value which I probably need to convert to strings.
I'm struggling to implement the Convert.ToString()-Method. Is this the right approach? Should I use dedicated Converters in XAML? Something like StringToDoubleConverter with IValueConverter?
Any advice would help. Thanks in advance.
c# xaml types converters
c# xaml types converters
asked Jan 3 at 8:18
jan97conjan97con
257
257
2
Your trouble lies in the binding from double to string: whenever you edit the text in the textbox, the double value is updated and the update is reflected back the textbox. This works fine when you enter digits, say change "123" to "1234". But suppose that you then add a decimal point: "1234.". The value will just be treated as 1234 in the model and fail to pass the 'if (value != _delayTime)' check, thereby not being updated. The textbox will just keep showing the value 1234 due to the binding. I think that using a converter is your only reasonable choice.
– JonyVol
Jan 3 at 8:52
add a comment |
2
Your trouble lies in the binding from double to string: whenever you edit the text in the textbox, the double value is updated and the update is reflected back the textbox. This works fine when you enter digits, say change "123" to "1234". But suppose that you then add a decimal point: "1234.". The value will just be treated as 1234 in the model and fail to pass the 'if (value != _delayTime)' check, thereby not being updated. The textbox will just keep showing the value 1234 due to the binding. I think that using a converter is your only reasonable choice.
– JonyVol
Jan 3 at 8:52
2
2
Your trouble lies in the binding from double to string: whenever you edit the text in the textbox, the double value is updated and the update is reflected back the textbox. This works fine when you enter digits, say change "123" to "1234". But suppose that you then add a decimal point: "1234.". The value will just be treated as 1234 in the model and fail to pass the 'if (value != _delayTime)' check, thereby not being updated. The textbox will just keep showing the value 1234 due to the binding. I think that using a converter is your only reasonable choice.
– JonyVol
Jan 3 at 8:52
Your trouble lies in the binding from double to string: whenever you edit the text in the textbox, the double value is updated and the update is reflected back the textbox. This works fine when you enter digits, say change "123" to "1234". But suppose that you then add a decimal point: "1234.". The value will just be treated as 1234 in the model and fail to pass the 'if (value != _delayTime)' check, thereby not being updated. The textbox will just keep showing the value 1234 due to the binding. I think that using a converter is your only reasonable choice.
– JonyVol
Jan 3 at 8:52
add a comment |
1 Answer
1
active
oldest
votes
Here's one quick way of handling this. Not the most suitable, and a converter would likely be better.
public string DelayTimeText
{
get
{
return _delayTimeText;
}
set
{
_delayTimeText = value; NotifyPropertyChanged();
}
}
public double DelayTime
{
get
{
if (double.TryParse( DelayTimeText, out double val ));
_delayTime = val;
return _delayTime;
}
}
You'd then bind to the Text property instead, and your calculations would rely on the TryParse, which would fall back to the previous value if it fails to parse.
I've tried your method, but I think it's flawed. When I try to type "0.7" into my View it converts into "7". It just ignores the numbers in front of the dot...
– jan97con
Jan 3 at 11:31
add a comment |
Your Answer
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%2f54018588%2ftrouble-inputting-doubles-in-view-due-to-not-using-strings%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
Here's one quick way of handling this. Not the most suitable, and a converter would likely be better.
public string DelayTimeText
{
get
{
return _delayTimeText;
}
set
{
_delayTimeText = value; NotifyPropertyChanged();
}
}
public double DelayTime
{
get
{
if (double.TryParse( DelayTimeText, out double val ));
_delayTime = val;
return _delayTime;
}
}
You'd then bind to the Text property instead, and your calculations would rely on the TryParse, which would fall back to the previous value if it fails to parse.
I've tried your method, but I think it's flawed. When I try to type "0.7" into my View it converts into "7". It just ignores the numbers in front of the dot...
– jan97con
Jan 3 at 11:31
add a comment |
Here's one quick way of handling this. Not the most suitable, and a converter would likely be better.
public string DelayTimeText
{
get
{
return _delayTimeText;
}
set
{
_delayTimeText = value; NotifyPropertyChanged();
}
}
public double DelayTime
{
get
{
if (double.TryParse( DelayTimeText, out double val ));
_delayTime = val;
return _delayTime;
}
}
You'd then bind to the Text property instead, and your calculations would rely on the TryParse, which would fall back to the previous value if it fails to parse.
I've tried your method, but I think it's flawed. When I try to type "0.7" into my View it converts into "7". It just ignores the numbers in front of the dot...
– jan97con
Jan 3 at 11:31
add a comment |
Here's one quick way of handling this. Not the most suitable, and a converter would likely be better.
public string DelayTimeText
{
get
{
return _delayTimeText;
}
set
{
_delayTimeText = value; NotifyPropertyChanged();
}
}
public double DelayTime
{
get
{
if (double.TryParse( DelayTimeText, out double val ));
_delayTime = val;
return _delayTime;
}
}
You'd then bind to the Text property instead, and your calculations would rely on the TryParse, which would fall back to the previous value if it fails to parse.
Here's one quick way of handling this. Not the most suitable, and a converter would likely be better.
public string DelayTimeText
{
get
{
return _delayTimeText;
}
set
{
_delayTimeText = value; NotifyPropertyChanged();
}
}
public double DelayTime
{
get
{
if (double.TryParse( DelayTimeText, out double val ));
_delayTime = val;
return _delayTime;
}
}
You'd then bind to the Text property instead, and your calculations would rely on the TryParse, which would fall back to the previous value if it fails to parse.
answered Jan 3 at 10:44
user3265613user3265613
12711
12711
I've tried your method, but I think it's flawed. When I try to type "0.7" into my View it converts into "7". It just ignores the numbers in front of the dot...
– jan97con
Jan 3 at 11:31
add a comment |
I've tried your method, but I think it's flawed. When I try to type "0.7" into my View it converts into "7". It just ignores the numbers in front of the dot...
– jan97con
Jan 3 at 11:31
I've tried your method, but I think it's flawed. When I try to type "0.7" into my View it converts into "7". It just ignores the numbers in front of the dot...
– jan97con
Jan 3 at 11:31
I've tried your method, but I think it's flawed. When I try to type "0.7" into my View it converts into "7". It just ignores the numbers in front of the dot...
– jan97con
Jan 3 at 11:31
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%2f54018588%2ftrouble-inputting-doubles-in-view-due-to-not-using-strings%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
2
Your trouble lies in the binding from double to string: whenever you edit the text in the textbox, the double value is updated and the update is reflected back the textbox. This works fine when you enter digits, say change "123" to "1234". But suppose that you then add a decimal point: "1234.". The value will just be treated as 1234 in the model and fail to pass the 'if (value != _delayTime)' check, thereby not being updated. The textbox will just keep showing the value 1234 due to the binding. I think that using a converter is your only reasonable choice.
– JonyVol
Jan 3 at 8:52