text:
Free shipping order above $300
|Shop by Brand
|VEDUTA | Kimono
|Product ID
|Product Name
|【Kimono & Obi】Japanese Fashion, Rise | Kimono | VEDUTA
|Traditional Technique
|S : Height 61.02" ~ 64.96" (Length 54.33"), M : Height 64.96" ~ 68.89" (Length 56.69"), L : Height 68.89" ~ 72.83" (Length 59.84"), Made-to-order : Height 72.83" or more and body weight 220.5 lbs or more,
|Product Weight
|2.43 lbs / 1100g
|Country of Manufacture
|Material : Silk
歴史 1
I was born in 1986 in Sadogashima, Niigata Prefecture. Sadogashima, which used to be a penal colony of imperial homes and nobles who lost the political disputes in Kyoto a long time ago, is a secluded island in the island nation Japan, but allows for a cultural stagnation with the glamor of the city It has produced unique inspiration and culture.
In 2008, I crossed the sea and jumped out of Japan.
While cherishing traditional Japanese culture that I have been familiar with since I was a child, I spent a very sensitive time touching HIPHOP and street culture. While my sensibility was in conflict between Japaneseness and the West, I could not finally suppress the explosion.
I went to Milan, the home of my suit.
I went to a number of workshops and what I saw was my commitment and confidence in the craftsmanship.
But more than that, it was my pride in the brand and culture that they possessed, and the patriotism that forms the basis of that.
歴史 2
After my experience in Milan, I asked myself, "What is me, what is Japanese?" Sometimes it gives me sweet joy, sometimes it gives me a feeling of defeat. The
I came through my own question and answer, inheriting the tradition, and destroying it, the spirit of defensive breaking down on his own unique path.
A Japanese identity backed by historical considerations and a perspective created from curiosity that does not fear creation and destruction. Forgiveness that fuses the essence of the street is a feature of my design. I launched VEDUTA ("Scenery" in Italian) to awaken the independence and diversity that the modern Japanese lost.
Changing clothes is a change of mind, and fashion has the power to change people's feelings.
Japan's current situation with a sense of obstruction and a sense of loss.
I would like Japanese people to become familiar with them for over 1,000 years, redefining the kimonos that have been inherited as the best suits for Japanese people, and changing the landscape of Japan.
While keeping important parts of traditional Japanese kimonos and yukatas, we propose innovative designs and coordination that go beyond conventional sense.
・ You don't need to have knowledge of dressing, you can wear it alone
・ You can wear it easily by using a rope belt
・ You can enjoy coordination according to your everyday wear
・ You do not need to buy clogs or skin brows etc.
-March 2018-
Establishment of VEDUTA
-April 2018-
CHUS CEBALLOS Supported by OTO MUSIC and .WAV
DJ / PRODUCER "CHUS & amp; CEBALLOS"
A representative of Spain's DJs who deal with official remixes of global artists led by Madonna
-June 2018-
Yosuke Kubozuka × Leslie Kee
Special Collaboration Photo
-July 2018-
VEDUTA COLLECTION in Shanghai
Brand's first exhibition held in Shanghai (over 400 visitors per day)
-April 2019-Gaki Ranger 20th Anniversary Live "Gaki-en-sai" in Ebisu
Free shipping order above $300
Available to all over the world
100% compensation for damage during delivery
Safe payment using Stripe or PayPAL


text:
So, I have about 5 minutes to blog about our first day in Vegas. There is too much - let me sum up:
Our flight was uneventful, except for the couple hooking up in the seats in front of us between Charlotte and Vegas. The Charlotte airport, by the way, is AWESOME. It's basically an entire mall in the airport, with lots of food and shopping options. I could live there.
We got into Vegas, and were greeted by our personal drivers holding up a sign that said "Baxtons." Awesome. We were staying at the South Point casino/hotel for the first night, so we got checked in (and the $20 trick worked to get us a nice view) and ate the most amazing $4 buffet ever. Seriously. I haven't eaten since then - that was nearly 20 hours ago - and I'm not all that hungry yet. We're about to go eat there again. That should do it for today.
We all played a little video slots, which didn't result in much. Then Phred and Oh Bee Juan played craps. For hours. And did very, very well. Oh Bee Juan started with $20, and walked away with $475. Then we all went to the strip, where the boys played craps for about 20 minutes, and made a good profit. We saw the light show at Freemont (Valerie and I saw two light shows, one while the boys were playing craps) and walked around.
Okay, I'm taking too long, and we have to go eat and watch football. Just like Sunday at home. Let me sum up this way: Vegas is awesome.
Sunday, November 19, 2006
Posted by Mrs. B at 1:00 PM
0 comments:
Subscribe to: Post Comments (Atom)

subset: commoncrawl


text:
Do you know what is mold remediation? If you do not, we are here to inform you. Read below to learn all about mold remediation. Mold remediation is a term for mold removal. A team of skilled professionals… Read More
Posts Tagged 'broken plumbing'
What Exactly is Mold Remediation?
- January 18th, 2012
- Posted in Health Risks, mold contractor, mold growth prevention, Ventilation Improvement
- Tags:
Tags: A team of skilled professionals, anyway?, black mold is inhaled, black mold spreads when it releases spores, broken plumbing, contact Advance Mold Remediation, contained and cleaned up, damp in condition where mold can thrive, facebook, find the location of the mold, four steps taken during the process of Mold remediation, further respiratory discomfort, Identify the Problem and Its Cause, Isolate the Problem, just what is mold remediation, leaking basement walls or a broken pipe, learn all about mold remediation, mold remediation, mold removal, plastic and tape, potential for black mold to thrive, remove the mold and replace any structural material, Remove The Mold., Repair All Damages., risk your health and the health of others, severity of a mold problem, twitter, What Exactly is Mold Remediation?, what is mold remediation


text:
We all ooh and ahh when lightning zaps from one cloud to another, but when the cloud that gets hit is the one where we store our data, suddenly it's not so cool.
The Register UK is reporting that last night lightning struck a transformer in Dublin, Ireland which caused a large explosion and some major power problems within the tech-heavy region. Among the hardest hit were Microsoft's and Amazon's cloud storage facilities. Some people will be without their cloudy-goodness for up to 48 hours, as servers are having to be manually restarted and cycled up, but as of right now it doesn't look as though any data has been permanently lost.
Meanwhile, PopSci is reporting that three recent solar flares, also known as coronal mass ejections (CMEs) are poised to screw up our power grid and various satellite communications in the northern U.S. Awesome. This is all part of a ramping up of solar activity, which we think will beging to slow again in early 2013 (if it doesn't bring Mayan Rapturepocalypse first). Until then, these types of disturbances are likely to be fairly common.
This all brings up some important points. We back up the things on our hard drives to the cloud because we assume it's safe and fool-proof. It bears remembering that the cloud is not a magical entity; it's just more hard drives that happen to be not in your house. As such, they are subject to failures and random acts of nature just like those that are choking on dust-bunnies in your apartment right now.
So, what can you do? Well, pick the right cloud. It's especially important to choose a cloud solution that has redundant copies of your data that are stored in multiple physical locations, preferably far away from each other. Don't trust cloud solutions that keep all of
their eggs your data in one basket data center. Ultimately, though, when mother nature cranks up the gas, we're all bugs on her motorcycle helmet's wind-screen.[via The Register and PopSci.]
Image credit: Shutterstock/Fesus Robert and NASA/SDO
You can keep up with Brent Rose, the author of this post, on Google+ or Twitter.


text:
The United Nations human rights chief today appealed to Member States to act now to protect the Syrian people as the Government's violent crackdown on peaceful protests continues unabated and the number of dead and injured continues to rise.
"The longer the international community fails to take action, the more the civilian population will suffer from countless atrocities committed against them," High Commissioner for Human Rights Navi Pillay told the General Assembly.
"The Government of Syria has manifestly failed to fulfil its obligation to protect its population," she stated. "Each and every member of the international community must act now to urgently protect the Syrian population."
The 193-member Assembly met to discuss the report of the UN Human Rights Council from December last year in which that body strongly condemned abuses by Syrian authorities carried out as part of the crackdown.
The meeting comes in the wake of the Security Council's recent failure to agree on collective action on the issue after Russia and China vetoed a draft resolution endorsing Arab League efforts to end the crisis.
"The failure of the Security Council to agree on firm collective action appears to have emboldened the Syrian Government to launch an all-out assault in an effort to crush dissent with overwhelming force," Ms. Pillay stated.
Since 3 February, "the Government has used tanks, mortars, rockets and artillery to pummel the city of Homs," she reported. "According to credible accounts, the Syrian army has shelled densely populated neighbourhoods of Homs in what appears to be an indiscriminate attack on civilian areas."
More than 5,000 people have been killed since the uprising – part of the broader Arab Spring movement across North Africa and the Middle East – began in March last year, and senior UN officials have repeatedly urged the Government to stop the violence and hold dialogue with opposition groups.
"We are certain that the number of dead and injured continues to rise every day," stated Ms. Pillay, who noted that while a lack of access has prevented her office from providing an exact figure, the number of people killed since last March is believed to be "well above" 5,400.
In addition, tens of thousands, including children, have been arrested, with more than 18,000 reportedly still arbitrarily held in detention. Thousands more are reported missing amid the crisis, which has sent 25,000 people to neighbouring and other countries to seek refuge and displaced more than 70,000 within the country.
"Extensive reports of sexual violence, in particular rape, in places of detention, primarily men and boys, are particularly disturbing," said Ms. Pillay.
She added that children have not been spared, with security forces having killed more than 400 children as of the end of January. Children, as young as 10, have also been subjected to arbitrary arrest and detention.
"I am outraged by these serious violations. I am very distressed that the continued ruthless repression and deliberate stirring of sectarian tensions might soon plunge Syria into civil war," she stated.
Syria's Ambassador Bashar Ja'afari responded by stating that the Human Rights Council's report was drawn up based on "deceptive, unilateral media reports." He reaffirmed his country's right to protect its citizens and to combat terrorism and armed violence and to put an end to them.
Opening the meeting, General Assembly President Nassir Abdulaziz Al-Nasser voiced his deep concern about the ongoing violence in Syria. "The international community should call on the Syrian authorities to end the killings immediately and to put a halt to human rights violations."
In a statement issued by his spokesperson, Secretary-General Ban Ki-moon voiced his grave concern about the escalating violence, mounting loss of life and deteriorating humanitarian situation, particularly in the city of Homs, which has been under siege and heavy shelling for more than a week.
"The United Nations will do all that it can to help those in need," the statement said, adding that the Secretary-General calls on all parties to allow unfettered access for humanitarian partners to assess and respond to the situation.
"He urges all in Syria and in the international community to exert maximum efforts to help bring about a stop to the violence and a peaceful resolution to the crisis."
Source: UN News Centre
The Brussels based United Nations Regional Information Centre for Western Europe - UNRIC provides information on UN activities to the countries of the region. It also provides liaison with institutions of the European Union in the field of information. Its outreach activities extend to all segments of society and joint campaigns, projects and events are organized with partners including the EU, governments, the media, NGOs, schools and local authorities.
United Nations Regional Information Centre for Western Europe (UNRIC Brussels)
Residence Palace, Rue de la Loi/Wetstraat 155, Block C2,7th and 8th floor, Brussels 1040, Belgium
Tel.: +32 2 788 8484 / Fax: 32 2 788 8485


text: An exhibition dedicated to the late Dutch furniture designer Martin Visser has recently opened at Maastricht's Bonnefanten museum. Titled Martin Visser – collector, designer, free spirit, the show focuses on Visser's significance for visual art, design and architecture in the Netherlands. On view until 17 June 2012, the exhibition showcases over a hundred paintings, sculptures, photographs and various works on paper from Visser's extensive art collection, number of works in situ originally developed for Visser's Bergeijk home in 60s and 70s, as well as eight furniture designs created by Visser such as the iconic 1958 sofa bed BR 02. (more…)


text:
OpenStreetMap, the increasingly popular Wikipedia-like project to create a map of the world — it's now used by Apple, Foursquare and others — has gotten its first major funding grant.
Knight News Challenge is putting $575,000 into the project, as a stipend paid to employees of OSM developer MapBox to work on core tools.
OSM, which was founded in 2004, has subsisted so far on volunteer services, membership drives and other donations. It's not nearly close to the scale of Wikipedia, whose global efforts are coordinated by a large full-time Wikimedia Foundation staff.
The Knight funding came out of a grant application from MapBox to create tools that make it easier for people to add to OSM maps, monitor areas of interest and make custom maps. The Washington, D.C.-based company also plans to improve the OSM community site, according to MapBox CEO Eric Gundersen.
Gundersen said he is devoting a significant portion of the MapBox team to the project, and is aiming to release the first products next spring. He plans to build out in public as open-source projects on GitHub.
MapBox's main product is a platform for publishing maps based on OSM that is used by Foursquare, NPR and others as an alternative to the Google Maps API. So, better data collection tools will help the company directly. "It's not about the maps, it's about the data," Gundersen said.


text: BACK TO FLOOR PLANS AD5 1 Bedroom 2 Bath950 Sq. Ft. APPLY ONLINE REQUEST MORE INFO Please check our availability and inquire about our waiting list. MORE 1 Bedroom FLOOR PLANS A1/AH1 1 Bedroom 1 Bath AD1 1 Bedroom 1 Bath AD2 1 Bedroom 1 Bath AD3 1 Bedroom 1 Bath AD3-2 1 Bedroom 1 Bath Visit Onyx On First SCHEDULE AN APPOINTMENT Property*Name* First Last PhoneEmail* Would You Like to Schedule a Personalized Tour of Our Community?*YES - I Would Like to Schedule A Tour NowI Just Have a QuestionMoving Time Frame?*[Make Selection]0 - 30 Days30 - 60 Days60 - 90 DaysNot Sure YetDo You Have Pets?*[Make Selection]Dog(s)Cat(s)NoneApartment Type?*[Make Selection]StudioOne BedroomTwo BedroomThree BedroomAvailable Tour Times are Mon-Fri: 9:30am-5:30pm | Saturday: 10:30am-4:30pm | Sunday: ClosedPreferred Tour Date?* Date Format: MM slash DD slash YYYY Preferred Tour Time?*[Make Selection]9:30 AM10:30 AM11:30 AM12:30 PM1:30 PM2:30 PM3:30 PM4:30 PM5:30 PMHiddenMessage or Additional CommentsCommentsThis field is for validation purposes and should be left unchanged.


text:
The Cinematograph Exhibitors Association has a garden party and fashion show at the Majestic Hotel, Harrogate.
This film documents a carnival as it processes through the streets of Eccleshill, Bradford and provides a good example of the types of carnivals that were common during the 1920s. The procession includes many decorated floats as well as participants in fancy dress.
In 1963 Ripon Training College celebrated its centenary year. This film documents some of those celebrations including the opening of new college buildings and a performance put on by the students.
This film documents the wedding of Miss Mary Margaret Newsholme of Oakworth to Mr. Roland Oswald Inman of Heaton at Keighley Parish Church, July 8th, 1939. The film includes footage of the guests and the bridal party arriving at the church as well as footage of the reception at The Withens following the ceremony.
Made by Charles Chislett, this is a film of a party held for staff members of William Deacon's Bank in Rotherham, where Chislett was manager. The party is held in the garden of his house. It shows the staff and children playing many outdoor games.
This Charles Chislett film consists of three parts, all featuring employees of William Deacon's Bank, Rotherham, where Chislett was manager. The first two are earlier, in black and white; the third part was made in about 1955 in colour. The first is of a works sports day, the second is a Sexton Blake inspired fictional thriller filmed partly at the bank, and the third is a staff day at Chislett's home.
This film deals with the issue of race relations and the immigrant community in Huddersfield, specifically in terms of education. It was filmed shortly after the famous "Rivers of Blood" speech given by Enoch Powell which addressed the rise in immigration during this time period.
This film is from the John Murray collection and contains unedited footage that was taken at a clothes shop in Dewsbury. The shop also had a work room where clothes were made and the film contains interview with the designer, Alison Cawkwell (11 the Drive, Manston Park, Carlinghow Lane, Batley) and the shop's financial backer is also interviewed. The clothes were sold in Leeds and London.
This film was made as a promotional film for Leeds University and highlights the wide range of subject areas potential students can choose to study, the facilities the university provides, and aspects of student's social life including student halls and the University Union. The film also includes interviews with many of the University's current students.
This is a film made by Charles Chislett of two family weddings. The film includes footage of the guests arriving at the church as well as the reception.
Part of the Ibberson Collection, this film documents a number of family related events which took place during 1957 including footage of the Ibberson boys at school and university.
This film captures the Allan family during their leisure time throughout the year.
This Needlecraft Exhibition took place in the Grosvenor Hotel which is set to be demolished in 2008 to make way for the New Retail Quarter in the city of Sheffield. The hotel was opened not long before this film was made. All the clothing featured in the film was made by students from the Newfield School, and these students can be seen modelling their finished designs.
This film from the Newfield School, located outside of Sheffield, documents some of the school year events, including a boat launch, fashions made by the students, camping in Wales, and a Walkabout on the school grounds.
This film captures the sites of the Summer Fayre at the Newfield School grounds located outside of Sheffield. Many people have turned out for the event on this sunny and warm summer day. This film is also a very good example of typical summer fashions of the time period.
This film features a variety of sports and races as well as camping and sailing. The final section of the film, made two years previously, is a dramatized comical of a devil and an angel in competition to see if the boy they follow will listen to one of them or the other. A score is kept throughout the film with good triumphing in the end. This film was made after September, 1969 because this was the time Newfield School went comprehensive. The newly named red building can be seen in the background of the golfing scenes.
This film is part of the Sharp Collection and contains footage from the opening of St Andrew's British Restaurant, a community restaurant in Bradford, by Alderman Semper. Various local dignitaries can be seen arriving and lunching at the restaurant with their wives. There are some excellent examples of forties fashion for women.
The following is an amateur film of 'Holidays at Home' week in Bradford. These popular events were held throughout the country as wartime rationing of products such as petrol meant people were unable to visit the coastal holiday destinations that were so popular before the outbreak of war.
This is a chronicle of Holidays at Home week in Bradford taken by a keen amateur filmmaker from the area who captured many similar events during the war. These popular events were held throughout Yorkshire and the rest of Britain as wartime rationing of products such as petrol meant people were unable to visit the coastal regions that were so popular before the outbreak of war.
This is a story book film with animation made by Jack Eley. It features his daughter Susan who dreams of a fairy who conjures up animated stories.
As part of the Sharp collection this film shows various branches of Sharp's Linoleum shops including one in Halifax. There are some excellent shots of streets, cars and fashions of the time. The second part of the film shows a staff Christmas party held at the Great Northern Victoria Hotel in Bradford.
This film documents some 'Holidays at Home' events at Lister Park, Bradford during World War II. Included is footage of sheep dog trials and fancy dress parades.
On 31st August, Odsal Stadium, Bradford hosted the 1985 World Speedway Final to a crowd of 37,000 who saw the regaining world champion, Erik Gundersen from Denmark, retain his title. This film includes footage of the day's events as well as scenes of the crowd who turned out for the event.
This is a promotional film made to encourage new businesses, especially those based in London and other southern cities, to set up headquarters in Harrogate. The film is told through the story of a businessman and his wife who are looking to relocate from London. They have come to visit Harrogate to see if it meets their standards, and in doing so, tour around many of the local attractions and businesses.
This film documents the festivities surrounding the wedding of Molly Johnson, Amy Johnson's sister, at Hull Trinity Church.


text:
Listings in Import/Export, Event Venues, Advance Ticket Sales, Nature & Parks and Philanthropic /Community Organizations near Kiambu County
DMV shipping
DMV shipping LLC strives & strides to deliver logistic services primarily from the East Coast of US to Kenya. It was established in December & we've continued to serve the District of Columbia, Maryland as well as Virginia residents thus our name.
Kigwa Conference Center
Kiambu County
Is this your listing? CLAIM IT!!
Review this
Shop online for what you want Create a list of product links and send Send the list to firstname.lastname@example.com Receive an invoice immediately via email Pay with MPESA or bank deposit
junction of Chiromo Lane and Westland Road, Behind
Westlands Constituency, Nairobi County
Is this your listing? CLAIM IT!!
Review this


text:
This is Part 2 in a series of articles on writing WPF Business Applications in VB.NET using Visual Studio 2008. This series tries to take a complex form or application and deliver articles on small pieces so that each piece can be understood.
If you have not yet read Part 1, please take a few minutes and read it. This series builds on previous articles, and does not repeat information.
Note: On 21 Feb. 2008, I rewrote Part 1 of the series, making large changes to the skinning and button control. If you previously read this article before 21 Feb. 2008, please go back and review it.
There are many fine WPF authors here on CodeProject with great insight and code. If you are new to WPF, can I suggest that you bookmark this article and take the time to read the foundational tutorials that CodeProject MVPs Josh Smith and Sacha Barber have authored? In addition to their tutorials, each have many WPF articles here on CodeProject and their blogs with sample code:
I should also mention that the SDK Team has put a lot of work into providing a lot of good, simple examples in the WPF SDK that are easy to learn from. When you install Visual Studio 2008, this is also installed. Take advantage of this free code. There is also a new Framework 3.5 SDK that was recently released. There is an issue with the install package, and when you install this new 3.5 SDK, XAML intellisense will quit working. Please read my blog post for the Registry entry fix.
Being a long time ASP.NET developer, I like to give the web page visitor a visual cue when there are errors on the page or the requested operation was successful. ASP.NET has a ValidationSummary control for displaying errors on a page. I like its simple programming interface and effective display of entry errors to the web page visitor. When operations are successful, I display a message indicating success. Moving to WPF, I wanted this same functionality, so I wrote a control that encapsulated the error listing and successful record operations notification.
The control is located in close proximity to the ToolBar buttons, making it very easy to train users to click the Save button and look for a visual cue, success or failure.
In the below series of images, the * is rendered by the data binding validation system in the Adorner Layer. I have replaced the default Validation.ErrorTemplate that renders a red box around controls with a template that renders a red asterisk when a validation error is reported for that control. A validation error could be an empty field, invalid entry, or any other business rule that is applied to the corresponding property on the business entity object.
The above image shows a simple form with two fields that must be filled in. The Validation.ErrorTemplate indicates a validation rule is currently broken. By changing the Validation.ErrorTemplate to the very familiar red asterisk, users can easily identify fields that need to be filled in or have other validation errors. As part of the error template, the TextBox ToolTip has been set to the validation error message.
TextBox ToolTip
The FormNotification control is designed to be data bound to the IDataErrorInfo.Error property of the business entity object that is being edited. This provides an instant no code solution for listing all entity object validation errors. This assumes that the Error property was coded. Many examples of using WPF 3.5 to bind to a business object that implements the IDataErrorInfo interface do not return information in the Error property. When writing the implementation code for the IDataErrorInfo interface in your applications, ensure that you code the Error property. In a future article in this series, I will show a complete, "real world" example of data binding to a business object that implements this interface in its base class. This same article will also cover how to set up validation rules that are declarative; meaning, without code, just attributes applied to properties.
The FormNotification control does not have to be data bound; its properties can be set in the form's code as well.
In the above image, the user clicked the Expander control's button which displays the error message text. The First and Last Name fields have not yet been filled in. I stated before that the red asterisks are rendered in the Adorner Layer. The Adorner Layer is above the layer that the controls are rendered on. When I first wrote this FormNotification control, the red asterisks would be displayed on top of the error message text. So I had to move the rendering of the error message text to the Adorner Layer so that it would be on top of the red asterisks in the Adorner Layer.
In the above image, the user has clicked the Expander control's button and the error message text is displayed. Notice that the red asterisk is no longer present near the First Name textbox. The Last Name textbox does have a validation error, so the red asterisk is present.
The above image shows the Watermark feature of the FormNotification control. If there are no errors and the user has not yet pressed the Save button, there would be nothing for the control to display. So I added a Watermark feature to provide a default text message. This way, the space below the form title would not be empty. You can use this any way you see fit. You could, for example, display the Watermark message, "New Record Is Ready To Be Saved".
In the above image, the user has just pressed the Save button. The form was valid and the record was written, so the user gets a visual cue indicating success. In this simple application, the NotificationMessage property is set in the Save button's click event. In future articles, I'll show you a technique to data bind this property to the business layer.
The FormNotificaion control provides several methods for implementing it. Your application requirements, business and data layers will determine how you will set its properties; binding, in code, or a combination of both.
In keeping with good WPF custom control design, I have provided a number of dependency properties to control the behavior of the FormNotification control. The properties are self explanatory.
I didn't supply a Background property for the ErrorHeader because I wanted it to take on the Background of the control. The ErrorHeaderText Foreground is already red by default, and since the ErrorHeaderText will be displayed until the form is valid, I didn't want to add another visual distraction for the user. If you need this, you can easily add it.
ErrorHeaderText Foreground
At first glance, the below XAML ControlTemplate for the FormNotification control looks complex. Broken down, it is just a Grid with a Canvas and two TextBlocks. The Grid is a really cool and flexible WPF layout control. If you don't specify multiple rows, the child controls are just stacked on top of each other. The FormNotification control takes advantage of this layout rendering, and uses triggers to alter the Visibility property of the child controls so that only one is visible at any time.
You will notice how the ControlTemplate binds to the control's dependency properties to populate TextBlocks, set colors and visibility.
TargetType="{x:Type Core_WPF:FormNotification}">
x:Key="stringLengthToBooleanConverter" />
TargetType="{x:Type Core_WPF:FormNotification}">
Background="{Binding Path=Background,
RelativeSource={RelativeSource TemplatedParent}}">
Foreground="{Binding Path=ErrorHeaderForeground,
RelativeSource={RelativeSource TemplatedParent}}"
Header="{Binding Path=ErrorHeaderText,
RelativeSource={RelativeSource TemplatedParent}}"
Background="{x:Null}" />
Text="{Binding Path=NotificationMessage,
RelativeSource={RelativeSource TemplatedParent}}"
Foreground="{Binding Path=NotificationMessageForeground,
RelativeSource={RelativeSource TemplatedParent}}"
Background="{Binding Path=NotificationMessageBackground,
RelativeSource={RelativeSource TemplatedParent}}"
HorizontalAlignment="Stretch" />
Text="{Binding Path=WatermarkMessage,
RelativeSource={RelativeSource TemplatedParent}}"
Foreground="{Binding Path=WatermarkMessageForeground,
RelativeSource={RelativeSource TemplatedParent}}"
Background="{Binding Path=WatermarkMessageBackground,
RelativeSource={RelativeSource TemplatedParent}}"
FontStyle="Italic" />
Value="" />
Value="" />
TargetName="txtWatermarkMessage" />
TargetName="txtNofificationMessage" />
TargetName="canvasEntryErrors" />
Binding="{Binding Path=ErrorMessage,
RelativeSource={RelativeSource Self},
Converter={StaticResource stringLengthToBooleanConverter}}"
Value="False" />
Binding="{Binding Path=NotificationMessage,
RelativeSource={RelativeSource Self},
Converter={StaticResource stringLengthToBooleanConverter}}"
Value="True" />
TargetName="txtWatermarkMessage" />
TargetName="txtNofificationMessage" />
TargetName="canvasEntryErrors" />
Binding="{Binding RelativeSource={RelativeSource Self},
Converter={StaticResource stringLengthToBooleanConverter},
Value="True" />
TargetName="txtWatermarkMessage" />
TargetName="txtNofificationMessage" />
TargetName="canvasEntryErrors" />
The above ControlTemplate uses three triggers to determine which text message (error, notification, or watermark) gets displayed.
This first trigger tests if the NotificationMessage and ErrorMessage properties are empty, and if so, triggers the display of the WatermarkMessage text. MulitTriggers are just like VB.NET If statements with the And operator between conditions.
Triggers by themselves do not allow developers to test to see if the property value is greater than or less than a certain value. However, by using a ValueConverter, developers can pass in values to the ValueConverter and return a Boolean that can be tested by the trigger.
Have a look at the above second and third triggers. By using a MultiDataTrigger, we can utilize a WPF binding expression that includes a ValueConverter and test the output of the ValueConverter. In the first MultiDataTrigger, we need to test for the condition where the ErrorMessage is empty and the NotificationMessage has a value so that we can display the notification message text.
The StringLengthToBooleanConverter is very simple. It tests if the input String is null or empty, and returns False; otherwise, it returns True. You will want to get comfortable with writing your own ValuteConverters. These simple classes allow you to not only convert data but also to extend the WPF binding system to perform logical operations on data. You can also do other things with converters, as we will see in future articles.
Imports System.ComponentModel
Namespace WPF
<TemplatePart(Name:="PART_Expander", Type:=GetType(Expander))> _
Public Class FormNotification
Inherits System.Windows.Controls.Control
#Region " Declarations "
Private WithEvents _objErrorsExpander As Expander
Private WithEvents _objErrorsExpanderAdornerLayer As AdornerLayer
Private WithEvents _objExpandedTimer As System.Timers.Timer
Private WithEvents _objTextBlockAdorner As TextBlockAdorner
Private Delegate Sub ExpanderDelegate()
#End Region
#Region " Shared Properties "
Public Shared AutoCollapseTimeoutProperty As DependencyProperty = _
DependencyProperty.Register("AutoCollapseTimeout", GetType(Double), _
GetType(FormNotification), New PropertyMetadata(2.0), New _
ValidateValueCallback(AddressOf IsAutoCollapseTimeoutValid))
Public Shared ErrorHeaderForegroundProperty As DependencyProperty = _
DependencyProperty.Register("ErrorHeaderForeground", GetType(Brush), _
GetType(FormNotification), New PropertyMetadata(New SolidColorBrush( _
Color.FromArgb(255, 208, 0, 0))))
Public Shared ErrorHeaderTextProperty As DependencyProperty = _
DependencyProperty.Register("ErrorHeaderText", GetType(String), _
GetType(FormNotification), New PropertyMetadata("Edit Errors"))
Public Shared ErrorMessageProperty As DependencyProperty = _
DependencyProperty.Register("ErrorMessage", GetType(String), GetType( _
FormNotification), New PropertyMetadata(String.Empty, New _
PropertyChangedCallback(AddressOf OnErrorMessageChanged)))
Public Shared ErrorPopUpBackgroundProperty As DependencyProperty = _
DependencyProperty.Register("ErrorPopUpBackground", GetType(Brush), _
GetType(FormNotification), New PropertyMetadata(New SolidColorBrush( _
Color.FromArgb(255, 253, 240, 151))))
Public Shared ErrorPopUpForegroundProperty As DependencyProperty = _
DependencyProperty.Register("ErrorPopUpForeground", GetType(Brush), _
GetType(FormNotification), New PropertyMetadata(New SolidColorBrush( _
Public Shared NotificationMessageBackgroundProperty As DependencyProperty _
= DependencyProperty.Register("NotificationMessageBackground", GetType( _
Brush), GetType(FormNotification), New PropertyMetadata(New _
Public Shared NotificationMessageForegroundProperty As DependencyProperty _
= DependencyProperty.Register("NotificationMessageForeground", GetType( _
Brush), GetType(FormNotification), New PropertyMetadata(New _
Public Shared NotificationMessageProperty As DependencyProperty = _
DependencyProperty.Register("NotificationMessage", GetType(String), _
GetType(FormNotification), New PropertyMetadata(String.Empty, New _
PropertyChangedCallback(AddressOf OnNotificationMessageChanged)))
Public Shared WatermarkMessageBackgroundProperty As DependencyProperty = _
DependencyProperty.Register("WatermarkMessageBackground", GetType( _
Brush), GetType(FormNotification))
Public Shared WatermarkMessageForegroundProperty As DependencyProperty = _
DependencyProperty.Register("WatermarkMessageForeground", GetType( _
Brush), GetType(FormNotification), New PropertyMetadata(New _
Public Shared WatermarkMessageProperty As DependencyProperty = _
DependencyProperty.Register("WatermarkMessage", GetType(String), _
GetType(FormNotification), New PropertyMetadata(String.Empty))
#End Region
#Region " Properties "
<Category("Custom"), _
Description("Number of seconds the error pop remain...")> _
Public Property AutoCollapseTimeout() As Double
Return CType(GetValue(AutoCollapseTimeoutProperty), Double)
End Get
Set(ByVal value As Double)
SetValue(AutoCollapseTimeoutProperty, value)
If _objExpandedTimer IsNot Nothing Then
_objExpandedTimer.Interval = value
End If
End Set
End Property
<Category("Custom"), _
Description("Error header text foreground brush.")> _
Public Property ErrorHeaderForeground() As Brush
Return CType(GetValue(ErrorHeaderForegroundProperty), Brush)
End Get
Set(ByVal value As Brush)
SetValue(ErrorHeaderForegroundProperty, value)
End Set
End Property
<Category("Custom"), _
Description("Error header text that is displayed when there ...")> _
Public Property ErrorHeaderText() As String
Return CType(GetValue(ErrorHeaderTextProperty), String)
End Get
Set(ByVal value As String)
SetValue(ErrorHeaderTextProperty, value)
End Set
End Property
<Category("Custom"), _
Description("Error message that is displayed in the expander ...")> _
Public Property ErrorMessage() As String
Return CType(GetValue(ErrorMessageProperty), String)
End Get
Set(ByVal value As String)
SetValue(ErrorMessageProperty, value)
End Set
End Property
<Category("Custom"), _
Description("Error message pop up background brush.")> _
Public Property ErrorPopUpBackground() As Brush
Return CType(GetValue(ErrorPopUpBackgroundProperty), Brush)
End Get
Set(ByVal value As Brush)
SetValue(ErrorPopUpBackgroundProperty, value)
End Set
End Property
<Category("Custom"), _
Description("Error message pop up forground brush.")> _
Public Property ErrorPopUpForeground() As Brush
Return CType(GetValue(ErrorPopUpForegroundProperty), Brush)
End Get
Set(ByVal value As Brush)
SetValue(ErrorPopUpForegroundProperty, value)
End Set
End Property
<Category("Custom"), _
Description("Notification message text. If this property is ...")> _
Public Property NotificationMessage() As String
Return CType(GetValue(NotificationMessageProperty), String)
End Get
Set(ByVal value As String)
SetValue(NotificationMessageProperty, value)
End Set
End Property
<Category("Custom"), _
Description("Notification message pop up background brush.")> _
Public Property NotificationMessageBackground() As Brush
Return CType(GetValue(NotificationMessageBackgroundProperty), Brush)
End Get
Set(ByVal value As Brush)
SetValue(NotificationMessageBackgroundProperty, value)
End Set
End Property
<Category("Custom"), _
Description("Notification message pop up foreground brush.")> _
Public Property NotificationMessageForeground() As Brush
Return CType(GetValue(NotificationMessageForegroundProperty), Brush)
End Get
Set(ByVal value As Brush)
SetValue(NotificationMessageForegroundProperty, value)
End Set
End Property
<Category("Custom"), _
Description("Watermark text message. This is displayed if ...")> _
Public Property WatermarkMessage() As String
Return CType(GetValue(WatermarkMessageProperty), String)
End Get
Set(ByVal value As String)
SetValue(WatermarkMessageProperty, value)
End Set
End Property
<Category("Custom"), _
Description("Watermark message pop up background brush.")> _
Public Property WatermarkMessageBackground() As Brush
Return CType(GetValue(WatermarkMessageBackgroundProperty), Brush)
End Get
Set(ByVal value As Brush)
SetValue(WatermarkMessageBackgroundProperty, value)
End Set
End Property
<Category("Custom"), _
Description("Watermark message pop up foreground brush.")> _
Public Property WatermarkMessageForeground() As Brush
Return CType(GetValue(WatermarkMessageForegroundProperty), Brush)
End Get
Set(ByVal value As Brush)
SetValue(WatermarkMessageForegroundProperty, value)
End Set
End Property
#End Region
#Region " Constructor and Initializer "
Shared Sub New()
DefaultStyleKeyProperty.OverrideMetadata(GetType(FormNotification), _
New FrameworkPropertyMetadata(GetType(FormNotification)))
End Sub
Private Sub FormNotification_Initialized(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles Me.Initialized
_objExpandedTimer = New System.Timers.Timer(AutoCollapseTimeout * 1000)
_objExpandedTimer.Enabled = False
_objExpandedTimer.AutoReset = False
End Sub
#End Region
#Region " Methods "
''' <summary>
''' When the expander collapses, need to remove the TextBlock adorner
''' </summary>
Private Sub _objErrorsExpander_Collapsed(ByVal sender As Object, _
ByVal e As System.Windows.RoutedEventArgs) _
Handles _objErrorsExpander.Collapsed
If _objErrorsExpanderAdornerLayer IsNot Nothing Then
_objTextBlockAdorner = Nothing
_objErrorsExpanderAdornerLayer = Nothing
End If
End Sub
''' <summary>
''' When the expander expands, need to put the error message in the
''' adorner layer because the controls below it, may have their own
''' adorner validation error messages, this places the expander
''' popup on top of all other adorder layer elements.
''' </summary>
Private Sub _objErrorsExpander_Expanded(ByVal sender As Object, _
ByVal e As System.Windows.RoutedEventArgs) _
Handles _objErrorsExpander.Expanded
Dim objExpanderGrid As Grid = FindChilden.FindVisualChild(Of Grid)( _
_objErrorsExpanderAdornerLayer = AdornerLayer.GetAdornerLayer( _
Dim txt As New TextBlock
txt.Text = Me.ErrorMessage
txt.Padding = New Thickness(5)
txt.Foreground = Me.ErrorPopUpForeground
txt.Background = Me.ErrorPopUpBackground
txt.BitmapEffect = New _
'need to move the TextBlock down below the expander and indent a little
Dim obj As New TranslateTransform(5, _objErrorsExpander.ActualHeight + 2)
txt.RenderTransform = obj
_objTextBlockAdorner = New TextBlockAdorner(objExpanderGrid, txt)
End Sub
Private Sub _objErrorsExpander_MouseEnter(ByVal sender As Object, _
ByVal e As System.Windows.Input.MouseEventArgs) _
Handles _objErrorsExpander.MouseEnter
End Sub
Private Sub _objErrorsExpander_MouseLeave(ByVal sender As Object, _
ByVal e As System.Windows.Input.MouseEventArgs) _
Handles _objErrorsExpander.MouseLeave
If _objExpandedTimer.Interval > 0 Then
End If
End Sub
''' <summary>
''' Since WPF uses the STA threading model, another thread like a timer
''' can not update the UI. WPF provides a very simple technique for
''' updating the UI from another thread.
''' </summary>
Private Sub _objExpandedTimer_Elapsed(ByVal sender As Object, _
ByVal e As System.Timers.ElapsedEventArgs) _
Handles _objExpandedTimer.Elapsed
Dispatcher.Invoke(Windows.Threading.DispatcherPriority.Normal, New _
ExpanderDelegate(AddressOf CloseExpander))
End Sub
Private Sub _objTextBlockAdorner_MouseEnter(ByVal sender As Object, _
ByVal e As System.Windows.Input.MouseEventArgs) _
Handles _objTextBlockAdorner.MouseEnter
End Sub
Private Sub _objTextBlockAdorner_MouseLeave(ByVal sender As Object, _
ByVal e As System.Windows.Input.MouseEventArgs) _
Handles _objTextBlockAdorner.MouseLeave
If _objExpandedTimer.Interval > 0 Then
End If
End Sub
''' <summary>
''' This method is called when the error message or notification message
''' property values are set and when the Time.Elapsed event fires.
''' This ensures that the expander region is closed and the adorner layer
''' is removed.
''' </summary>
''' <remarks></remarks>
Private Sub CloseExpander()
If _objErrorsExpander IsNot Nothing AndAlso _
_objErrorsExpander.IsExpanded Then
_objErrorsExpander.IsExpanded = False
End If
End Sub
''' <summary>
''' This is the call back that gets called when the ErrorMessage
''' dependency property is changed.
''' </summary>
Private Shared Sub OnErrorMessageChanged(ByVal d As DependencyObject, _
ByVal e As DependencyPropertyChangedEventArgs)
Dim obj As FormNotification = DirectCast(d, FormNotification)
If Not String.IsNullOrEmpty(e.NewValue.ToString) Then
obj.NotificationMessage = String.Empty
End If
End Sub
''' <summary>
''' This is the call back that gets called when the NotificationMessage
''' dependency property is changed.
''' </summary>
Private Shared Sub OnNotificationMessageChanged(ByVal d As DependencyObject, _
ByVal e As DependencyPropertyChangedEventArgs)
DirectCast(d, FormNotification).CloseExpander()
End Sub
''' <summary>
''' This method is called by the WPF Dependency Property system when the
''' AutoCollapseTimeout value is set.
''' </summary>
Public Shared Function IsAutoCollapseTimeoutValid(ByVal value As Object) _
As Boolean
Dim dbl As Double = CType(value, Double)
If dbl < 0 OrElse dbl > 100 Then
Return False
Return True
End If
End Function
''' <summary>
''' This is where you can get a reference to a control
''' inside the control template. Notice the PART_ naming convention.
''' </summary>
Public Overrides Sub OnApplyTemplate()
'Each object that you are getting a reference to here is also
'listed in a TemplatePart attribute on the class.
'<TemplatePart(Name:="PART_Expander", Type:=GetType(Expander))> _
_objErrorsExpander = CType(GetTemplateChild("PART_Expander"), Expander)
End Sub
#End Region
End Class
End Namespace
For the most part, the FormNotification control is a good number of dependency properties. There are some parts of the code that need to be reviewed and explained.
The <TemplatePart(Name:="PART_Expander", Type:=GetType(Expander))> attribute that decorates the FormNotification class is used by GUI designers like Blend. It also provides a way for developers to document the controls in the ControlTemplate that will be accessed from within the class code of the control. Note the use of the "PART_" naming convention that I covered in the first article of this series.
<TemplatePart(Name:="PART_Expander", Type:=GetType(Expander))>
If a control will be accessed in code, developers typically will declare a class level variable of the same Type as the TemplatePart. The class level variable will be set in the OnApplyTemplate method like this:
_objErrorsExpander = CType(GetTemplateChild("PART_Expander"), Expander)
When designing your custom controls, you must make a decision as to what happens if the TemplatePart is missing from the ControlTemplate. You might ask, "How can this happen?" Remember that consumers of your control can restyle it and do what they want, just like you have done with a Button or another control. For this control, I have decided that the PART_Expander must be present and it must be an Expander control. I do this by not catching any exceptions from the OnApplyTemplate method and letting them bubble up.
I have a blog post, WPF Sample Series - Expander Control With Popup Content that explains how to make the Expander control open and overlay controls as opposed to shifting them down. When I used that control in this project, I found that the Validation.ErrorTemplate error cues were displaying over top of the Expander popup. So I had to move the error message text into the Adorner Layer, which requires code.
If you look back at the FormNotification ControlTemplate, you will notice that the Expander control has one child, an empty Grid with no children. Since we are going to be rendering in the Grid's Adorner Layer, there is no need to have child controls inside the Grid.
FormNotification ControlTemplate
I learned a lot about rendering text in the Adorner Layer from Josh Smith's blog post, Rendering Text in the Adorner Layer, and in fact, I am using his TextBlockAdorner class in this project.
The _objErrorsExpander_Expanded event handler fires when the user presses the Expanders button. It is here that we need to perform a little bit of work.
The Dim objExpanderGrid As Grid = FindChilden.FindVisualChild(Of Grid)(_objErrorsExpander) code uses the Generic helper function FindVisualChild to locate the Grid that is a child of the Expander control in the Visual Tree. This is a good use of Generics to allow any dependency object to be discovered inside any other dependency object. We need a reference to the Grid control so that we can render the error message text in its Adorner Layer.
Dim objExpanderGrid As Grid = FindChilden.FindVisualChild(Of Grid)(_objErrorsExpander)
Next we need a reference to the Grid control's Adorner Layer. We get it with this code: _objErrorsExpanderAdornerLayer = AdornerLayer.GetAdornerLayer(objExpanderGrid). You will notice that this Adorner Layer reference is stored at class level. This is done so that we can remove the Adorner Layer at a later time.
_objErrorsExpanderAdornerLayer = AdornerLayer.GetAdornerLayer(objExpanderGrid)
Next, the TextBlock control is created and properties set. By setting the Padding property and adding a DropShadowBitmapEffect, we make the TextBlock look like a popup or ToolTip. You could add a Border and or expose other properties to change the look of the popup TextBlock if you need them.
When the Expander opens, we want the popup to be below and indented slightly right of the Expander content. I moved the TextBlock 5 device independent pixels to the right and down the ActualHeight of the Expander plus 2.
This is accomplished with a TranslateTransform object like so: Dim obj As New TranslateTransform(5, _objErrorsExpander.ActualHeight + 2). This object is then applied to the TextBlock in the form of a RenderTransform with this code: txt.RenderTransform = obj. At this point, we have a completed TextBlock that has been moved relative to where it will be placed, we just need to place it.
Dim obj As New TranslateTransform(5, _objErrorsExpander.ActualHeight + 2)
txt.RenderTransform = obj
This is where we will use the TextBlockAdorder class from Josh's blog post. This class derives from Adorner. We create a new one, passing in a reference to the Grid and TextBlock we have constructed with this code: _objTextBlockAdorner = New TextBlockAdorner(objExpanderGrid, txt).
_objTextBlockAdorner = New TextBlockAdorner(objExpanderGrid, txt)
We can now add the new Adorner to the Adorner Layer with this code: _objErrorsExpanderAdornerLayer.Add(_objTextBlockAdorner), and the error message text appears as a popup.
Anytime the Expander control is collapsed, the Adorner will be removed from the Adorner Layer and all class level variables involved in this process set to Nothing. The _objErrorsExpander_Collapsed event handler fires each time the Expander is collapsed.
The Expander is collapsed when the user clicks on the Expander button when it's expanded. The control also collapses the Expander when either the ErrorMessage or NotificationMessage properties are set. These properties trigger the closing in case the user leaves the popup expanded and goes back to working on the form and the ErrorMessage changes or they save a record.
Both the ErrorMessage and NotificationMessage dependency properties have PropertyChangedCallback assigned in the dependency property registration. This callback gets executed when the dependency property is changed using the class property accessors (CLR wrapper for property setter) or when changed directly by using the SetValue method. I want to thank Josh Smith for backing me up on this change I made to the article; his comments to me are in the article comments below.
The Expander can also be collapsed automatically. When the user's mouse leaves the boundary of the Expander and the popup TextBlock, a Timer starts. The Timer.Interval property is set to the FormNoficication.AutoCollapseTimeout value. When the Timer is started and the Timer.Interval is reached, the Timer.Elapsed event fires and the code below in the _objExpandedTimer_Elapsed event handler executes:
Dispatcher.Invoke(Windows.Threading.DispatcherPriority.Normal, _
New ExpanderDelegate(AddressOf CloseExpander))
WPF uses the STA threading model. Other threads like the Timer are not allowed to directly set properties on UI controls. WPF provides a very simple pattern for other application threads to access UI controls. The Dispatcher is like a Windows Message Pump, except that it only affects the application that it is running in. In the above code, we have instructed the Dispatcher to invoke a delegate method. Since the Dispatcher runs on the WPF application UI thread and is invoking the delegate CloseExpander method, that method will execute properly. The CloseExpander method collapses the Expander if it is expanded. It is the collapsing of the Expander that triggers the Adorer clean up code.
You should have a look at the Dispatcher in general and the Windows.Threading.DispatcherPriority Enum. For example, you can use the above pattern to run code when the application is idle or is in the background. Yes, you read this correctly. You can start a background thread with one line of code in WPF.
If you want codeless form validation for your controls, your business entity objects need to implement IDataErrorInfo. The Microsoft SDK Team released this article, Data Validation in 3.5 that explains the basics. It takes about 3 minutes to read and understand. Sacha and Josh have good articles on data binding. View Sacha's Data Binding article here. View Josh's Data Binding article here. I recommend you have a look at both of these articles.
I have supplied a demo class called Customer. This class implements the IDataErrorInfo and INotifyPropertyChange interfaces. Please do not copy or use the code from this class. This simple throw away demo code does not represent a very good way to implement data validation logic in your business entity classes. This class is here to provide a method for wiring up the FormNotification control for this demo only. Also, your business entity classes should derive from a class that actually implements these interfaces. No need to add extra code to all your business entity classes when it can be encapsulated in a common base class.
In a future article, I will show you how to implement declarative validation in your business entity objects that is all contained in a base class that any business entity object can derive from.
The read-only IDataErrorInfor.Item property parameter is the property name to validate. If no errors are present, then an empty or null string is returned. If errors are present, a String with the errors should be returned. I have a bone to pick with many implementations of IDataErrorInfo that I have seen. That the code only returns the first error instead of all the errors on the property. When designing your own implementation of IDataErrorInfo, ensure that you return a String that lists all the errors on the property and not just the first one.
The timing when the WPF 3.5 data binding system reads the Item property through the IDataErrorInfo interface is based on the way the binding of the object has been set up. The options are to validate each time the property changes, when focus is lost on the control or explicitly.
For this series, we will be performing validation when focus is lost. One reason for validating on LostFocus is so that we can format the output of the text using the declarative programming in the business layer I've been speaking about. For example, I have a high octane text formatting function that will alter the text case or format of the input text without any code on the developer's part. Just apply an attribute to the entity object property, and along with validating the text, it will be formatted and text case set.
Let's have a look at the XAML markup for the two TextBox controls:
<TextBox Width="100" Grid.Column="1" HorizontalAlignment="Left"
Margin="5,5,0,5" x:Name="txtFirstName"
Text="{Binding Path=FirstName, Mode=TwoWay, UpdateSourceTrigger=LostFocus,
ValidatesOnDataErrors=True}" ToolTip="Enter customers first name." />
<TextBox Width="100" Grid.Column="1" HorizontalAlignment="Left"
Margin="5,5,0,5" x:Name="txtLastName" Grid.Row="1"
Text="{Binding Path=LastName, Mode=TwoWay, UpdateSourceTrigger=LostFocus,
ValidatesOnDataErrors=True}" ToolTip="Enter customers last name." />
The binding statement is familiar to all WPF developers. What is new to WPF 3.5 is the ValidatesOnDataErrors property. This property is actually a shortcut for cleaner XAML markup. Here is the explanation from the MSDN help file topic:
Setting this property provides an alternative to using the DataErrorValidationRule element explicitly. The DataErrorValidationRule is a built-in validation rule that checks for errors that are raised by the IDataErrorInfo implementation of the source object. If an error is raised, the binding engine creates a ValidationError with the error and adds it to the Validation.Errors collection of the bound element. The lack of an error clears this validation feedback, unless another rule raises a validation issue.
Setting this property provides an alternative to using the DataErrorValidationRule element explicitly. The DataErrorValidationRule is a built-in validation rule that checks for errors that are raised by the IDataErrorInfo implementation of the source object. If an error is raised, the binding engine creates a ValidationError with the error and adds it to the Validation.Errors collection of the bound element. The lack of an error clears this validation feedback, unless another rule raises a validation issue.
Bottom line, you just change your current binding statements by adding this new ValidatesOnDataErrors property and you now have data entry validation; providing the business object implements the IDataErrorInfo interface. Since most business objects derive from a class other than Object, in other words, they derive from a base class, adding support for this interface to your current projects should be painless.
As I've stated before, the Customer class is coded so that we can demo the FormNotification control. This is not how you should implement business rules in your classes.
When the Item property is read, the property name is compared to the simple rules and a validation result is returned for that property.
When the Error property is read, it returns a string that represents all the validation errors on the object.
Public Class Customer
Implements INotifyPropertyChanged
Implements IDataErrorInfo
Default Public ReadOnly Property Item(ByVal strPropertyName As String) As String _
Implements System.ComponentModel.IDataErrorInfo.Item
Return Me.CheckProperties(strPropertyName)
End Get
End Property
Public ReadOnly Property [Error]() As String _
Implements System.ComponentModel.IDataErrorInfo.Error
Return Me.CheckProperties(String.Empty)
End Get
End Property
Private Function CheckProperties(ByVal strPropertyName As String) As String
Dim strResult As String = String.Empty
If String.IsNullOrEmpty(strPropertyName) OrElse _
String.Compare(strPropertyName, "FirstName", True) = 0 Then
If String.IsNullOrEmpty(_strFirstName) Then
strResult = "First Name is a required field."
End If
End If
If String.IsNullOrEmpty(strPropertyName) OrElse _
String.Compare(strPropertyName, "LastName", True) = 0 Then
If String.IsNullOrEmpty(_strLastName) Then
If strResult.Length <> 0 Then
strResult += vbCrLf & vbCrLf
End If
strResult += "Last Name is a required field."
End If
End If
Return strResult
End Function
These are the basics for setting up a WPF form that binds to a business entity object.
As previously stated, the forms in this business application are constructed of UserControls that are the Content of a TabItem control. In this simple demo form, the UserControl is very simple, and does not derive from a base class, nor is part of an MVC or similar architecture. In future articles, the UserControls that make up the forms will all derive from a base class that will implement common code. This is especially true of command bindings and the MDI plumbing.
In this simple demo code, you'll notice that I'm creating a new Customer object. This is not a good practice to have the UI constructing business entity objects. This code is here to provide a shell for the FormNotification control demo.
Partial Public Class PartTwo
#Region " Declarations "
Private _objCustomer As Customer
#End Region
#Region " Constructor & Loaded "
Public Sub New()
' This call is required by the Windows Form Designer.
End Sub
Private Sub PartTwo_Loaded(ByVal sender As Object, _
ByVal e As System.Windows.RoutedEventArgs) _
Handles Me.Loaded
If Me.DataContext Is Nothing Then
End If
End Sub
#End Region
#Region " Methods "
Private Sub btnNew_Click(ByVal sender As Object, _
ByVal e As System.Windows.RoutedEventArgs) _
Handles btnNew.Click
End Sub
Private Sub btnSave_Click(ByVal sender As Object, _
ByVal e As System.Windows.RoutedEventArgs) _
Handles btnSave.Click
If _objCustomer.IsValid Then
Me.frmNotification.NotificationMessage = "Customer record saved"
End If
End Sub
Private Sub NewRecord()
Me.frmNotification.NotificationMessage = String.Empty
_objCustomer = New Customer()
Me.DataContext = _objCustomer
End Sub
Private Sub UpdateFocusedField()
Dim fwE As FrameworkElement = _
TryCast(Keyboard.FocusedElement, FrameworkElement)
If fwE IsNot Nothing Then
Dim expression As BindingExpression = Nothing
If TypeOf fwE Is TextBox Then
expression = fwE.GetBindingExpression(TextBox.TextProperty)
'TODO add more controls types here. Won't be that many.
End If
If expression IsNot Nothing Then
End If
End If
End Sub
#End Region
End Class
What I'm about to explain is a serious gotcha in WPF. This only happens with Buttons hosted in a ToolBar object. If you move the same ToolBar Button out of the ToolBar control, this problem does not raise its ugly head. Trust me, I'm thinking about ditching the ToolBar container just so I don't have to deal with this.
ToolBar Button
The data binding system validates the TextBox control when the TextBox control loses focus. OK, no problem. That's how we set up the TextBox binding behavior, to update on LostFocus.
If you enter some text in a TextBox and then press one of the ToolBar Buttons, the TextBox that has focus will not validate, nor will it update the business entity object it is bound to. It took me a while to figure out what was going on. Other developers had the same problem, so I confirmed that I wasn't crazy.
This is where the UpdateFocusedField method comes into play. In this demo application, the method is called when the Save button is clicked. This method forces the binding system to update its source, which forces the validation code to execute.
All of this code will be moved to a common base class and all command event handlers will run this code. But you need to know what is going on and that there is a solution for this issue.
In the btnNew_Click event handler, if the Customer object IsValid method returns True the FormNotification.NotificationMessage is displayed. In future articles, I'll show you how to bind this property to the business object that handles the interaction logic for the form. MVC calls this the Controller class.
There is an undesirable Adorner Layer behavior that occurs when switching the selected TabItem. I have blogged about this here: WPF Validation Errors Disappear Inside TabControl when Switching TabItems.
If you have a form that has some validation errors and then you switch to another TabItem and then switch back, the validation error cues would no longer be displayed. This is not a bug. The Adorner Layer is just not visible any more after switching TabItems. Remember, the Adorner Layer is where the validation error cues are displayed. To get around this behavior, just wrap the form content in an AdornerDecorator as in the above code and the validation cues will remain visible when you return back to this TabItem.
The above image is the Metallic skin. Check out the TextBoxes, they have rounded corners. To accomplish this, I added a new ControlTemplate to the Metallic skin resource dictionary for the TextBox class that adds rounded corners to the TextBox. Open the MetallicResourceDictionary.xaml file and look for the TextBox ControlTemplate. You will notice that I have wrapped the default TextBox control in a Border control.
TextBox ControlTemplate
The PartTwo.xaml file has no special markup. When the skin is changed, all controls begin using the ControlTemplates from the selected skin file.
Take a close look at the border around the form controls. Its BorderThickness is 1. In the Office Blue skin, the same border has a BorderThickness of 3.
These subtle changes between skins are a demonstration of altering Styles and ControlTemplates between skin files to achieve the look your application requires.
I hope that you got something from this article in the WPF Business Application Series and that you have seen some of WPF's potential for writing great business applications.
In addition to this Business Application Series, I also have a WPF Sample Series on my blog. I post several WPF sample applications a month. I won't be posting every sample here on CodeProject, but you can still read them and download the code from my blog.
Have a great day!
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
I'm a passionate Software Architect and Developer.
A long-time WPF-Prism fanatic who enjoys writing line of business applications, developer tools, and Visual Studio Extensions.
My front end passions are WPF, Electron, Node.js, WordPress, and Angular.
For the back end I use what is appropriate for the project: SQL Server and ASP.NET WebAPI, Azure, etc.
I am very pragmatic software engineer and strive to write simple, maintainable, and testable code. Simple code allows for solving complex problems in a maintainable way.
My Blog
My Github Repros
Just a grain of sand on the worlds beaches.
Cheers, Karl
My blog | My articles
Karl Shifflett wrote:Now the bar is REALLY high.
1. no database, data layer will read/write to XML.
3. ASP.NET with AJAX UI
4. Application needs to demonstrate:
a. simple form
b. master detail form
c. popup ediing form
d. popup selection form
e. Report Viewer Control displaying a report
f. security based on a user login. I was going to allow the Admin User the
ability to edit drop down or combo box data.
g. dynamic loading of menu and toolbar buttons based on the users security
5. No 3rd party controls, just what comes with the VS2008 installation, or
what controls I provide.
Now for the question:
1. Order Entry
2. Kiosk for purchasing items at conferences or shows
3. ???
Karl Shifflett wrote:3. ???
Pete O'Hanlon wrote:A simple Order Entry application is probably going to be useful for demonstrating the concepts without getting in the way.
Pete O'Hanlon wrote:style switching might be an option to consider
Pete O'Hanlon wrote: why not introduce Undo/Redo support
Karl Shifflett wrote:My current system just provides Refresh and Cancel buttons. The Refresh button reloads the data from the data layer when editing, allowing the user to start over. Cancel clears the form when inserting allowing the user to start over.
Karl Shifflett wrote:Is there a requirement for business forms to have this feature? I can see it on large text areas but on a form with 15 entry controls, that could introduce support issues with users that may not be power users. This is category that a lot of business application users are in. They are experts in their vertical field, but may not be computer power users that understand the dynamics of a UI feature that if used, could ripple unwanted and unnoticed changes to their customer entry form when they press the Undo button twice instead of once.
Pete O'Hanlon wrote:I've created an Undo/Redo service that we just bind in to the UI (god bless Routed Commands and CanExecute handlers).
Karl Shifflett wrote:Heck, introduce it in an article too!
General News Suggestion Question Bug Answer Joke Praise Rant Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


text:
Dr. John F. Assini, MD
Doctor Specializes In:
Doctor Type:
Phone Number:
Details/Testimonial About the Doctor:
Dr. John F. Assini, MD is a Rheumatologist that deals with Fibromyalgia patients out of his office in Schenectady, NY.
This doctor specializes in the following discipline(s):
- Adult Rheumatology
As of the last update to this profile, Dr. John F. Assini, MD member type was that of: ACR Fellow Member.
If you have any reviews, comments or concerns regarding Dr. John F. Assini, MD please add them to the comment form located at the bottom of this page. Recommendations for changes to this profile can be made through our contact page, or through the comment form below.
Office Address:
Sunnyview Hospital
Schenectady, NY 12308United States


text:
Fearless won me a Dell
Regarding Fearless Consumer Barbara Nordin, I want to commend her column for the impact it had on my consumer problem reported last summer. Readers may remember that my Dell laptop had been crashing Word documents for 10 months or more, and I had talked to technical assistants from Austin to India at all hours of the day and night.
While I know Barbara's purpose is to report consumer problems, in fact, her call to Dell Corporate caused the powers that be to respond to my heretofore ignored letters.
Dell replaced my Dell 4100 laptop with its newly issued 5100, transferred my consumer contract, and sent me a carrying case at no charge. Within a couple of weeks, however, the problem with Word crashing occurred again, and Barbara called again.
This time, I was given a very competent member of the "Escalation" team who diagnosed the problem as a conflict between some extra MS "stuff" (programs not necessary or useful) and the operating system. He had me remove those programs and, bingo, Word stopped crashing.
Although I don't think of myself as superstitious, I waited to write a "thank you" to The Hook because I feared the program would revert to its old illness. But four plus months later, the patient appears cured.
I am deeply appreciative to Barbara and to The Hook, which features her great column on a regular basis.
Kay Slaughter


text:
As Summer 2014 draws to a close then now's a great time to get your Summer 2015 Goa Holiday booked.
Late deals aren't what they used to be and now those who book their Goa Summer 2015 Holidays early are most likely to get the best prices and certainly the very best choice.
If you want the very best choice of Summer 2015 Goa hotels and flights then get booking now. You'll also find that prices will start to rise as places fill up.
If you want to be sure of temperatures and sunshine hours far in excess of those in the unpredictable UK then Goa takes some beating as a wonderful choice for your 2015 Summer Holiday.
We've listed below some of the best websites to find the perfect Summer 2015 Goa Holiday:
1. Thomson Holidays – A Market-Leading Choice of 2015 Summer Goa Holidays
2. First Choice Holidays – The All-Inclusive Summer 2015 Goa Holidays Specialist.
3. Jet2 Holidays – Good Value Summer 2015 Holidays departing from Local UK Airports
4. Thomas Cook Holidays – A Leading Goa Summer Holiday Operator
5. Thomson Luxury Holidays – Premium & Luxury Summer 2015 Goa Holidays
6. Onthebeach.co.uk – Build-Your-Own Goa Summer Holiday
7. James Villas – The Leading Goa Villa Holidays Specialist
9 Sunshine.co.uk – Dynamically Packaged Goa Summer Holidays
10. easyJet Holidays – Great Value Build-Your-Own Summer Holidays
11. Club 18-30 Holidays – High Energy Summer 2015 Package Holidays!
12. Hotelopia – Goa Hotel-Only Specialist
13. Olympic Holidays – Greece, Turkey, India and so much more
Specific Area Specialist:
14. Balkan Holidays – Amazing Holidays to Bulgaria, Croatia, Slovenia and Montenegro
Be sure to click the "Goa Holidays" link at the top of the page to find links ALL the leading Goa companies.
Scroll down the sidebar to the right to see links to hundreds of useful travel websites.
Have a perfect Goa Summer Holiday in 2015. 🙂Share


text:
Project Car - Project LMS Takes On A New Look
We Are Now Ready To Hang Our Body And Paint The Chassis
The front steering system is a stock-type drag link, much the same as is used on the Craftsman Trucks, Busch Series cars, and the Nextel Cup cars. This is a great series to transition into the upper NASCAR classes or Hooters ProCup racing, all with similar chassis styles.
Our chassis is all finished with its very own chassis number. A new Five Star body is on the way to Hess Racing for fitting onto the chassis. We need to weld on all of the body brackets before we paint everything. Once the body is fitted, the chassis will be painted and the body will be attached permanently.
We have also completed our motor parts list, and it is being reviewed by Jeremy Upchurch to make sure there are no technical conflicts. We are using the GM Bow Tie Sportsman 350 Main Size block, PN 12480047 (Note: The previously published part number was wrong, so don't use it), right out of the 2004 GM Performance Parts catalog. We will use the NASCAR-legal Phase 3 Cast-Iron Bow Tie head, PN 12480034, also from the GM Performance Parts catalog. Those parts have arrived, and as soon as we can get the rest of the engine parts delivered, Jeremy can begin assembly.
This project is moving along, and most of our time is spent trying to select and contact the various parts suppliers. Nonetheless, we will proceed with the assembly and have this car ready and able to go racing in early spring of 2005. We would have liked to test and race the car this year, but the end result will all be the same. Besides, this way we can all start out the '05 racing season together.
Send questions or comments about the project to: Circle Track Magazine, 3816 Industry Blvd., Lakeland, FL 33811, or e-mail us at email@example.com.
The interior sheetmetal has been installed as well as the seat frame tubing and firewall. These panels will be custom fitted to the all-steel body to provide a sealed environment to help keep heat, carbon monoxide, and fire from entering the driver's compartment.
The rear sheetmetal is in place to separate the fuel cell and filler apparatus from the cockpit.
The Hess team mocks up the position of the rearend, using our newly-built, low-friction Tiger rearend. When fabricating the three-link brackets, our car will have brackets in place where we can run either a truck arm rear linkage or a three-link with parallel trailing arms.
The fuel cell compartment is laid in along with the supports. Note the very sturdy rear bars that protect the fuel cell from rear end impact. These cars take a lot of abuse from the rear. We plan on being fast enough to prevent anyone from getting to our bumper. Nice thought, anyway.


text:
Skip to Main Content
Doing Business
How Do I...
Departments A-G
Risk Management
Workers' Compensation
Workers' Compensation
Regarding Injuries
If you are a Pierce County employee looking for information regarding an on-the-job injury, you may find the following information helpful:
You can find detailed filing instructions on the Risk Management internal website. If you are an employee who cannot access this information on the internal website, contact your supervisor or Pierce County Risk Management at (253) 798-7462.
Pierce County is self-insured for workers' compensation benefits. We are not part of the State Fund. You will not find self-insured paperwork at your medical provider's office. You must contact your supervisor or the Risk Management office for the proper paperwork.
Access a printable
Activity Prescription Form (APF)
for use regarding injuries while on-the-job.
Reopening a Claim
Arrow Left
Arrow Right
Slideshow Left Arrow
Slideshow Right Arrow


text:
Two teens get 50 to life in drive-by shooting; advocates protest sentence
More than two dozen youths and advocates gathered in front of the criminal courts building in downtown Los Angeles to support two young males who were sentenced today to 50 years to life in prison for a fatal drive-by shooting.
A jury convicted Steven Menendez, 17, and Jose Garcia, 19, of murder in July in the March 2007 death of 16-year-old Danny Saavedra.
Saavedra was playing basketball in the 500 block of 82nd Street in South Los Angeles when he was shot in what police described as a gang-related attack. Afterward, officers pursued a vehicle matching the description of the one used in the killing, and when Garcia and Menendez got out, they were arrested.
Both later said they were just passengers and identified the shooter as Noel Velasco, a 26-year-old member of the Street Villains gang. Velasco was never charged and was shot to death three months later.
Saavedra's parents and siblings spoke at the sentencing and told prosecutors they considered the sentence appropriate, said Jane Robison, a spokeswoman for the district attorney's office.
"These were two admitted gang members who went into rival gang territory, and they drove around not once but twice, slowed down and shot and killed a 16-year-old boy who had no gang connection," Robison said.
But supporters of Garcia and Menendez said they did not deserve such harsh sentences.
"My son has never been locked up before," said Menendez's mother, Maria Luisa Borrego, 34, of Downey. "I don't think this is justice at all. It's more like vengeance."
Rachel Veerman coordinates a support group for Menendez and other parents whose children are in jail or detention. She said her own son narrowly escaped being charged as an adult after friends took his car and used it in a drive-by shooting.
She said her son's lawyer persuaded a judge to keep the attempted murder case in Juvenile Court, and her son was ordered to spend two years in state detention. He is now a freshman at Santa Clara University.
"We've been seeing more and more of these outrageous sentences — it just doesn't make sense," Veerman said. "They should pay for what they did, but now they're just throwing them and our tax dollars away."
Some supporters considered today's sentences a partial victory: Garcia had faced life without parole. About 250 prisoners convicted for crimes committed when they were youths are serving such sentences statewide, according to Kim McGill, an organizer with the Inglewood-based Youth Justice Coalition.
McGill said her group supports proposals to revise such strict sentencing laws. The Fair Sentences for Youth Act, sponsored by state Sen. Leland Yee (D-San Francisco) and scheduled for consideration by the state Assembly later this year, would allow some youths sentenced to life without parole to qualify to have their sentences reconsidered and be released.
"They learn much more in the community about what it means to be a good human being than they do in prison," McGill said.
-- Molly Hennessy-Fiske


text:
In October 2014, Biz-stay.com researchers conducted an extensive survey
comparing the lowest available weekly
discount rates the following January 2015 at eight leading extended stay hotel chains. The chains ranged from budget to upscale. For extended
stay chain abbreviations used in the rate matrix below, please refer to the following key:
Copyright ©2000-2020 biz-stay.com. All rights reserved.
| Privacy Policy |


text:
- Industrial Actuator
- Furniture Actuator
- tubular linear actuator
- Medical Actuator
- Accessories
- LCD TV lifter, Pop up TV
- Lifting Column
- Track Actuator
- Dual Actuator for Electric bed
- Electric adjustable Table
- Control box
- Hand set
- Foot Controller
- Mounting bracket
Customs order
Please tell us your requirements of linear actuator, the rest of things left for us.
We will propose the reasonable solution for you and supply you the right products at competitive price.
Email us: firstname.lastname@example.com
Call us: 0086-18606682243


text:
Eccles Health Sciences Library has expanded its subscription to the Journal of Visualized Experiments (JoVE) to include:
- General
- Neuroscience
- Immunology and Infection
- Clinical and Translational Medicine
JoVE is a peer-reviewed, PubMed indexed journal devoted to the publication of biological, medical, chemical and physical research in video format. If you are not familiar with JoVE you can read additional information about the journal here.
To access JoVE's video content either go through the Eccles Library e-Journals page or search the library's link to PubMed. Within PubMed, click on the Eccles Library Online icon to get access to the full text and videos when connected to the university network.
If you have additional questions about access to and using JoVE, contact Christy Jarvis, email@example.com or phone at 801-581-3031.


text:
by Deborah
I love the muted tones in my home, there is a mixture of whites, blacks, greys and textures to harmonise things as it can get pretty chaotic in here. Ocasionally however I like to spice things up with a touch of pink, I think it sits well with the achromatic feel of the flat and the pink really pops out. Sometimes we just need a bit of colour.
1 | 2 | 3 | 4 | 5 | 6
Other Stories
17 comments:
I never thought I would like pink until now ; )ReplyDelete
I'm not usually a pink fan, but you've made me a convert next to all the beautiful grays and muted tones (especially the rug!). Might have to wear some pink tomorrow :)ReplyDelete
This is so pretty. I especially love that poster on the last picture!ReplyDelete
Love the Angela Landsbury picture!ReplyDelete
I really like this soft pink with blacks, whites and greys.ReplyDelete
soooooo hard to find a socially acceptable pink!ReplyDelete
Nos. 2 and 5 :DReplyDelete
Ooo I love the nail piercing! Great pics. The pink really does work well in the spaceReplyDelete
i just found your blog and i'm in love:)ReplyDelete
this shade of pink is phenomenal.ReplyDelete
Peachy pink with grey mud tones works well! I also have had a crush in pink, but now the crush is ending and I am trying to get rid of some pink items.. But one giant pink kelim rug will definitely stay! And I think it is enough in my home :)ReplyDelete
Lovely pircture collection.
love the last photo!! very clever! and effective!ReplyDelete
january, x
Love your blog! So much inspiration :)ReplyDelete
wow! this is great. totally obsessed with dusty pink at the moment.ReplyDelete
and what a coincidence - I've just posted this a couple of days ago...
x karen
my little Acne bag <3ReplyDelete
Acne-pink is the best :)
Woohoo absolutely love this post! so subtile!ReplyDelete
xxx Sofie
Oh my, that pink chair just stole my heart! ;-)ReplyDelete
Thank you for your comments, I love hearing from you!
Questions, comments or sponsorship inquires, please contact me via the 'contact' link.


text:
Reading & Libraries
An Evening with Simon Armitage: Inspire <Virtual> Poetry Festival 2020
Online Event
We're always looking to improve your experience. Please send us your feedback.
The telephone number given on this page is for Ask Inspire - our central contact point for all your library needs including renewals, enquiries, room bookings and much more. (Ask Inspire opening hours).
Phone: 01623 677 200
Email: firstname.lastname@example.com
Edgewood Library is closed.
Edgewood Primary School, Christchurch Road
Phone: 01623 677 200
Email: firstname.lastname@example.com
Fax: 0115 964 0138
We'd love you to join us! By becoming a member of Inspire you will be able to have your say on how the society works and develops.
Not a member yet? Sign up


text:
À propos
I am a world traveler, living, and exploring countries. Mostly around Europe, Africa, Central and South América. That give me the opportunity to know and understand cultures. I have been moving for the last 12 years and working online since then after closing my own advertising company. I work fully online with many clients around the globe and use 99designs when I have some free time.
Membre depuis: 14 décembre 2008
"Awesome as always. "
"Always a delight to work with this professional, innovative and timely designer. "
Client anonyme
"Perfect like always !"
Client anonyme
"Quick responses to changes and I like the final design. Thanks for your work!"
Client anonyme
"Merci beaucoup à dobleve ! Grace à lui nous avons un logo encore bien mieux que nous imaginions ! Tout était parfait !"
Client anonyme
"Always great working with dobleve. He did an amazing work on this logo, identity and packaging project."
"Fast and good work , good communication , creative ideas, thank you!"
"Always a pleasure working with dobleve; he is always able to go above and beyond in expressing the brand's meaning through the logo's design. I highly recommend him."
"Dobleve absorbed the information I shared on the brief, and complemented it with a whole bunch of additional insights. He presented a great design from the start, editing fast and paying full attention to all feedback & suggestions I shared with him. It..."
"Great to work with, did all the changes we wanted and came up with a wonderful initial design."
eric 7ef
"Excelente trabajo."
"I really like the log design dobleve was able to come up for me - just awesome! He also created multiple iterations for me according to my change requests. Pleasure to work with. Highly recommended!"
"Great design, clever play on 'packets moving through the tube', otherwise known as a network. Great fit for brand of networkmanagementsoftware.com!"
"Excellent design and even better customer service.... Great working experience....!!! Highly Recommended!!!!"
"This was a great experience!"
"A great Designer and also very customer oriented. Hope to see more logos from dobleve! "
"We were very pleased with the work of dobleve. The design had a professionalism not matched by many. He was quick to respond to suggestions giving us many different designs to look at so we could find what we liked. We have had nothing but great comm..."
"Thank you Dobleve for giving us a wonderful logo! We absolutely love it! I would highly recommend Dobleve. He is creative, very easy to communicate with and responded to our requests professionally and with efficiency. A real pleasure to work with! Th..."


text:
2012-10-01: Information Station Column
Are you a magazine reader? Do you wish you had time to read magazines and then you would be a magazine reader?? I'm right there with you. And, most often, I just don't remember to check out a few magazines to bring home with me for those "just right magazine reading moments". SO, when we found out about Zinio – a way to read your magazines on your computer, tablet, or smart phone – it seemed like a great idea to us! We have subscribed to Zinio and used their top 50 magazine list to subscribe to some of their most popular offerings. Now all you have to do is go to our website, click on the Zinio logo, set up your account, choose your magazines and download! They will automatically come to your account each month as they are released. You won't even have to wait for the most recent copy to come "out of the black folder" to enjoy it! So go online and sign up today or give us a call – we would be glad to help you!
Book Review:
Jenny Wingfield's debut novel, The Homecoming of Samuel Lake, is a book that is guaranteed to keep you reading. I was taken in immediately by the intricacy of her characters and the plot that unfolds simply as you read. It is the tender story of the Moses clan – Willadee, Moses' daughter, and her husband, Samuel Lake, and their three children, that head back to Arkansas every June for the Moses family reunion. This year, the reunion starts out like any other but tragically takes a turn as they lose an important family member. What unfolds after the loss, becomes the major crux of the story – and it revolves around Swan, Willadee and Samuel's eleven year old daughter. She is a fabulous character that you will love from the start. I was drawn to her simple and yet very complex line of thinking – she is a wonderful eleven-year-old.
There were some tough parts to the novel – abuse of animals and children – but it wasn't drawn out so much that I couldn't get through it – and the end is redemptive. The novel left me in tears – I would highly recommend this one! I agree with this review:
"It's all here. Faith. Honesty. Sin. Redemption. . . . Anyone who loves Scout in To Kill a Mockingbird will delight in Swan, the Lakes' eleven-year-old daughter."—USA Today


text:
Oscars Will Include Tribute to James Bond
James Bond and his license to kill and skirt-chase will be honored at this year's Academy Awards ceremony, the telecast's producers said.
The tribute to 007 comes as the venerable spy franchise celebrates its 50th anniversary. The popularity of Ian Fleming's devilish secret agent shows no signs of flagging. The latest entry, "Skyfall," starring Daniel Craig, became the first Bond movie to pass $1 billion at the worldwide box office. Some Oscar-prognosticators believe that the film's theme song from British chanteuse Adele and the performance of Javier Bardem as a sociopathic villain could find themselves with Oscar nominations.
"We are very happy to include a special sequence on our show saluting the Bond films on their 50th birthday," Producers Craig Zadan and Neil Meron said in a statement. "Starting with 'Dr. No' back in 1962, the 007 movies have become the longest-running motion picture franchise in history and a beloved global phenomenon."
Zadan and Meron didn't tip their hand about what the sequence will involve and whether Craig and past Bonds like Sean Connery and Pierce Brosnan would participate.
The Oscar show will air Sunday, Feb. 24.


text:
This is the future, supercar buyers. If this is how it's to be, bring it on.
It really does tick a whole lot of boxes. You know you want one.
Typically BMW for its sheer composure on the road and fine refinement.
The default four-seat cabrio. Excellent engines and quality, impressive metal roof too.
For the vast majority of us, the 3 Series Touring is all the car we could use or want
Less inviting to own than a Mercedes C-coupe, but scores points with excellent driving dynamics, a strong range, well laid-out cabin and class-best infotainment.
The X3 has never done BMW much credit, but the new one is a thorough enough job to take on the class best
The new 5 Series is as good to drive as the BMW image, and yet it's as refined and plush as a Mercedes E-Class.
Rivals keep it from a better score, but the new 3 is still one of the benchmarks for this class
If you *really* like BMWs, then the 8 Series is great. But it's less special than its rivals
The X7 is BMW's biggest and most luxurious SUV, and it wants to be noticed
Far better looking than the old 1 Series Coupe. Driving and owning qualities mark it out as a real BMW.
All-new third-generation X6 is easy to drive quickly, but not as rewarding as we'd hoped
Far from M Division's finest hour. Fast, but you couldn't live with the ride
Cookie settings


text:
I have had this card idea sitting in my pile to do for a long long time, as you can see I am using retired colors/paper on this, but I was real happy with how it turned out.
SS: Best Yet
CS: Pink Pirouette (retired), Basic Black, Bella Birds DSP(retired), Certainly Celery DSP, WW. I used Pretty in Pink CS on the tag but wished I had stuck with the Pink Pirouette, but it does give it a nice contrast.
INK: Basic Black
Accessories: Black Grosgrain Ribbon, Punch: Boho Blossoms, Big Shot, Loopy Flowers Strip Die, Lots of Tags Sizzlit, Brads, Diminsionals
So For Now…
Happy Stamping!!
ChristiPin It Now!


text:
Healthcare Library
What to prescribe (and to whom) are questions of on-going debate and investigation. The following are some generally accepted recommendations:
For most patients without complicating conditions
Diuretics are usually recommended as first-line treatment for patients without complications either alone or together with an ACE inhibitor, ARB, beta-blocker, or calcium channel blocker. Diuretics are generally safe, effective, and less expensive than other high blood pressure medications.
There are reasons why medications other than diuretics would be selected first. See the following descriptions.
For older adults
Diuretics continue to be the best choice for most older adults. The initial dose in people over 65 should generally be half the dose used in younger adults. Blood pressure should be checked both while seated and standing because older adults may drop their blood pressure while standing.
Because of a concern for drug interactions and side effects, some physicians are reluctant to give high blood pressure drugs to elderly patients. The scientific information, however, strongly supports the use of diuretics or beta blockers in the elderly (including those with isolated systolic hypertension) to lower the risk of heart attack, stroke, and heart failure.
For patients with diabetes
Studies suggest that people with diabetes may need medication if their blood pressure is 130/80 mm Hg or higher. This is to protect the heart and help prevent other complications common to both diseases. In general, ACE inhibitors and ARBs are the first choice for people with diabetes, since they also appear to protect the kidneys. In many cases, however, combinations are required to achieve blood pressure goals. In such cases, low-dose diuretics or calcium-channel blockers are added as needed.
For patients with isolated systolic hypertension
Isolated high systolic pressure is usually treated with a diuretic. A long-acting calcium-channel blocker may be an alternative, although some experts believe that ACE inhibitors or ARBs are proving to be the best choice in this group.
For patients with heart failure
People with heart failure generally should be given ACE inhibitors, often in combination with a beta-blocker and a diuretic.
For patients who have had a heart attack
ACE inhibitors and beta blockers are generally used following a heart attack.
For patients who are pregnant
Most women who develop high blood pressure only during pregnancy (gestational hypertension) are at low risk for preeclampsia and require no treatment, other than monitoring once the pregnancy is completed. Women who have high blood pressure and plan to or become pregnant should talk with your obstetrician about medications.
All blood pressure medications cross the placental barrier. ACE inhibitors, ARBs, and direct renin inhibitors have harmful effects to a fetus, including kidney disease and fatalities. They should be avoided during pregnancy. Beta-blockers should not be used during the early stages of pregnancy -- later use can be considered by your obstetrician. Labetalol is often used if a pregnant patient needs a beta blocker. Methyldopa has been the most researched blood pressure medication during pregnancy and may be selected by your doctor if you are diagnosed with high blood pressure while pregnant.
Reviewed By: Steven Kang, MD, Division of Cardiac Pacing and Electrophysiology, East Bay Arrhythmia, Cardiovascular Consultants Medical Group, Oakland, CA. Review provided by VeriMed Healthcare Network. Also reviewed by David Zieve, MD, MHA, Medical Director, A.D.A.M., Inc.
Event Calendar
Hunterdon Healthcare offers an array of educational events, including childbirth, healthy living and fitness classes.LEARN MORE
Health and Wellness Centers
Where health and fitness meet to help you stay healthy at every age.LEARN MORE
Heart & Vascular
Heart and Vascular Services Department brings world-class cardiovascular care to our community.LEARN MORE


text:
Lack of ethics haunts mom
Regarding the Peabody story [News, "School story: Peabody Mom gets son expelled," August 14, 2003], this is my third letter to you which I was assured would be published.
After I saw what Lisa Provence had done to the issues, I called her, and she said, "We did not like the angle of a boy not doing well in school, so we used this one."
Clearly this was not about the actualities or sequence of events.
I provided lots of quotes and situations clearly illustrating the lack of inter-staff communication, let alone with parents and students. I even supplied information regarding an NBC29 story illustrating neglect of students at Peabody. Interesting, your selective omissions.
What benefit could there be for the Hook to slant a story? A kid, a scholarship, a revocation two months into school. No one can make a call in that amount of time. The school's promises, both verbal and in writing, to provide extra help to integrate Nicolas into Peabody mid-year, were not followed through on. There was no conference requested before revocation; this is not responsible action.
How dare you conveniently neglect this information and blatantly side with a school whose administrators do not do what they say, promise, and put in writing?
Is this a low-income mom verses a wealthy community school bias?
[Hook reporter] Lisa [Provence] had the audacity to libel me with the slanderous comment by [school principal] Harriet [Kaplan] "belligerent" and "threatening to the safety of the school."
Anyone with any brainpower will read that and infer that I was violent. I was never violent, nor did I ever threaten the safety of anything or anyone.
I was furious that Kaplan neglected to respond to my e-mails after specifically e-mailing me back saying, "I am considering your points and will respond in two or three days." One month later when I asked her if she had any intention of responding, she said no. And then I challenged her and confronted her ethics, including the attitudes of her staff.
It was then that she threatened me with the police and expelled my son due to "no fault of his own."
What a negligent slant, Lisa; why so committed to making me look at the very least like an unfit parent?
I am appalled and thoroughly disgusted with your lack of ethics. The Hook and Harriet Kaplan seem to see eye to eye on altering things to look good, save face, CYA, or an "angle." Very reflective of our society at large.
My naiveté will serve me well. And you Lisa, [Hook editor] Hawes [Spencer], [Hook copy editor] Rosalind [Warfield-Brown], and the Peabody staff, may you steep in your lack of ethics as they come back upon you; life is like that, haven't you noticed that yet?
J. Raskin